[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-devel
Subject:    Konqueror startup timed (Was: Re: RFC: Startup speed of Konqueror cvs HEAD - benchmark)
From:       Roger Larsson <roger.larsson () norran ! net>
Date:       2002-12-06 15:47:23
[Download RAW message or body]

On Friday 06 December 2002 15:03, Stephan Kulow wrote:
> Am Freitag, 6. Dezember 2002 02:51 schrieb Roger Larsson:
> > Hi KDE developers,  (and Bcc: Linux Mem. Man. FYI)
> >
> > People often complains about startup speed for Konqueror, especially when
> > the intended use is to manage files on the local disk. I have looked into
> > that, and one thing that I have done is to compare several programs for
> > file managing (really only starting and exiting). Note that the
> > filemanagers do have very different feature set. I did also run this test
> > with 2.5.50 (bottom of mail).
> >
> >
> > /usr/bin/time FILEMANAGER ~
> >
> > The results look like this (SuSE 2.4.18 kernel):
> >
> How did you time that taking that konqueror doesn't exit when it's finished
> displaying the directory? If you canceled it manually, you shouldn't report 
it
> with two digits after the comma :)

I canceled it manually. (But I did run several times to get a feel for what 
should be the actual value) User and system time does not change much...
But their second digit is interesting - so the reason is formating I guess...


But now I have found a better way :-)

With the addition of some kdDebug in konq_main (see patch below).
Then running konqueror with
 strace -tt konqueror 2> run.txt
and filtering the output with
 grep "write(2" run.txt  | head -142 | more
You can find some really interesting things...


					CACHED		NOT CACHED
time until app.exec()			1.9 s		10.9 s
parts
  to got into main()			0.4 s		 3.0 s
  the line "KonquerorApplication app;"	0.4 s		 4.0 s
  kio stuff				0.9 s		 1.3 s

If we could delay some work (really wait time) in the uncached case to
after app.exec() is called - it would be perceived as (and in reality be)
much faster...

/RogerL

Index: konq_main.cc
===================================================================
RCS file: /home/kde/kdebase/konqueror/konq_main.cc,v
retrieving revision 1.114
diff -u -3 -p -r1.114 konq_main.cc
--- konq_main.cc        18 Jun 2002 21:03:22 -0000      1.114
+++ konq_main.cc        6 Dec 2002 14:57:59 -0000
@@ -45,26 +45,34 @@ static KCmdLineOptions options[] =

 int main( int argc, char **argv )
 {
+  kdDebug(1202) << "main()" << endl;
+
   KCmdLineArgs::init( argc, argv, KonqFactory::aboutData() );

   KCmdLineArgs::addCmdLineOptions( options ); // Add our own options.

+  kdDebug(1202) << "app" << endl;
   KonquerorApplication app;

+  kdDebug(1202) << "dcop register" << endl;
   app.dcopClient()->registerAs( "konqueror" );

   app.dcopClient()->setDefaultObject( (new KonquerorIface())->objId() );

+  kdDebug(1202) << "libkonq + registerFormats" << endl;
   KGlobal::locale()->insertCatalogue("libkonq"); // needed for apps using 
libkonq
   KImageIO::registerFormats();

+  kdDebug(1202) << "parsedArgs" << endl;
   KCmdLineArgs *args = KCmdLineArgs::parsedArgs();

+  kdDebug(1202) << "konqueror-crash" << endl;
   KTempFile crashlog_file(locateLocal("tmp", "konqueror-crash-"), ".log");

   KonqMainWindow::s_crashlog_file = new QFile( crashlog_file.name() );
   KonqMainWindow::s_crashlog_file->open( IO_WriteOnly );

+  kdDebug(1202) << "args" << endl;
   if ( kapp->isRestored() )
   {
     int n = 1;
@@ -127,6 +135,7 @@ int main( int argc, char **argv )
   }
   args->clear();

+  kdDebug(1202) << "app.exec();" << endl;
   app.exec();

  //// Temporary code, waiting for Qt to do this properly

 
>> Visit http://mail.kde.org/mailman/listinfo/kde-devel#unsub to unsubscribe <<
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic