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

List:       kde-devel
Subject:    Re: Why is KDE so _slow_?
From:       James Richard Tyrer <tyrerj () acm ! org>
Date:       2002-11-17 5:17:51
[Download RAW message or body]

Maks Orlovich wrote:
 >> You appear to be missing something here.
 >>
 >> Whether or not this stuff is reported, it is still done.
 >
 >
 > No, you are missing a great deal here.

Another typical remark from an "arogrant KDE coder". :-)

But it is OK to insult a professional programmer by misunderstanding what
  he said -- deliberately misunderstanding what he said.

Do you actually think that I am complaining about the time needed to
print the debug information.  If you think that, then you are dumber
than you are implying that I am.

 > When KDE is compiled w/o debugging, the output code gets compiled
 > away to nothing.

I know that!

 > And output to a terminal or xsession-errors is very slow.

I know that!

 > FYI, starting Konqueror as a file manager from panel on my Celeron
 > 950 takers about 600ms or so here.

My take on this was not about the total time needed to start Konquer,
but rather why it took a while.

 > (Webbrowser is slower, since it has to do a lot more work - in
 > particular dlopening khtml, kjs_html, preparing font metrics info,
 > and rendering the intro page)

So, it does do stuff even if you are using binaries without debug code.

 > I know just about everything that Konqueror does on startup, and
 > probably at least 98% or so of it can be justified;

I didn't suggest that it wasn't justified although it is true that part 
of it is C++ overhead.  What I would suggest is that the time period 
while NOTHING happens be shortened as much as possible.  This will make 
it appear faster.

 > perhaps there can be ways to try to cache some of it, but that's a lot
 > more difficult than what it sounds like. (The one thing that couldn't
 > be justified got fixed in 3.1)
 >
Then why don't you understand the difference between reporting the stuff
and doing the stuff?

According to the debug output, konqueror does all of this on startup on
my system from the command: "konqueror":

> [jrt@localhost jrt]$ konqueror
> kio (KTrader): KServiceTypeProfile::offers( Browser/View, )
> kio (KTrader): Returning 28 offers
> libkonq: ## loaded: 500 entries.
> konqueror: KonqMainWindow::enableAllActions false
> kparts: MainWindow::createGUI, part=(nil)
> konqueror: KonqMainWindow::openURL : url = 'file:/home/jrt'  serviceType='' \
>                 view=(nil)
> konqueror: KonqMainWindow::setLocationBarURL: url = file:/home/jrt
> konqueror: trying openView for file:/home/jrt (servicetype inode/directory)
> konqueror: serviceName= m_sViewModeForDirectory=
> konqueror: serviceName=
> konqueror: KonqViewManager::createView
> konqueror: Trying to create view for "inode/directory"
> kio (KTrader): KServiceTypeProfile::offers( inode/directory,Application )
> kio (KTrader): Returning 2 offers
> kio (KTrader): KServiceTypeProfile::offers( inode/directory,KParts/ReadOnlyPart )
> kio (KTrader): Returning 9 offers
> konqueror: konq_iconview : X-KDE-BrowserView-AllowAsDefault is valid : true
> konqueror: KonqView::switchView
> konqueror: +KonqKfmIconView
> kparts: found Plugin : \
>                 /usr/kde3/share/apps/konqiconview/kpartplugins/dirfilterplugin.rc !
> kparts: found Plugin : \
>                 /usr/kde3/share/apps/konqiconview/kpartplugins/kimgalleryplugin.rc \
>                 !
> kparts: found Plugin : \
>                 /usr/kde3/share/apps/konqiconview/kpartplugins/kshellcmdplugin.rc !
> kparts: found Plugin : \
>                 /usr/kde3/share/apps/konqiconview/kpartplugins/smbmounterplugin.rc \
>                 !
> kparts: load plugin DirFilter
> kparts: load plugin
> kparts: load plugin
> kparts: load plugin
> kio (KTrader): KServiceTypeProfile::offers( ThumbCreator, )
> kio (KTrader): Returning 12 offers
> kio (KDirLister): +KDirLister
> kio (KDirListerCache): +KDirListerCache
> kio (KDirWatch): Available methods: Stat, FAM
> konqueror: KonqMainWindow::insertChildView 0x8205850
> konqueror: KonqMainWindow::viewCountChanged
> kparts: 0x80c1670 emitting activePartChanged 0x8206348
> konqueror: KonqMainWindow::enableAllActions true
> konqueror: Part is already active!
> konqueror: KonqView::openURL url=file:/home/jrt locationBarURL=file:/home/jrt
> konqueror: KonqView::setLocationBarURL file:/home/jrt this=0x8205850
> konqueror: DirFilterPlugin: New URL    : file:/home/jrt
> konqueror: DirFilterPlugin: Current URL:
> kio (KDirLister): [virtual bool KDirLister::openURL(const KURL&, bool, bool)] \
> file:/home/jrt keep=false reload=false kio (KDirListerCache): [void \
> KDirListerCache::listDir(KDirLister*, const KURL&, bool, bool)] 0x823b930 \
> url=file:/home/jrt keep=false reload=false kio (KDirListerCache): [void \
> KDirListerCache::stop(KDirLister*)] lister: 0x823b930 kio (KDirListerCache): [void \
> KDirListerCache::forgetDirs(KDirLister*)] 0x823b930 kio (KDirListerCache): listDir: \
>                 Entry not in cache or reloaded: file:/home/jrt
> konqueror: [void KonqView::setLoading(bool, bool)] loading=true hasPending=false
> kio (KDirWatch): Added Dir /home/jrt [KDirWatch-1]
> kio (KDirWatch):  Setup FAM (Req 1) for /home/jrt
> kio (KTrader): KServiceTypeProfile::offers( ThumbCreator, )
> kio (KTrader): Returning 12 offers
> konqueror: KonqKfmIconView::slotRenderingFinished()
> libkonq: ## addToHistory: file:/home/jrtTyped URL: file:/home/jrt, Title:
> konqueror: KonqMainWindow::openView ok=true bOthersFollowed=false returning true
> libkonq: KBookmarkManager::toolbar begin
> libkonq: KBookmarkManager::toolbar trying cache
> konqueror: main() -> no args
> konqueror: KonqMainWindow::slotPartActivated 0x8206348 konqiconview
> konqueror: New current view 0x8205850
> kparts: MainWindow::createGUI, part=0x8206348 KonqKfmIconView
> kparts: ReadOnlyPart::guiActivateEvent -> file:/home/jrt
> konqueror: KonqMainWindow::setCaption(file:/home/jrt)
> konqueror: KonqView::setLocationBarURL file:/home/jrt this=0x8205850
> konqueror: KonqMainWindow::setLocationBarURL: url = file:/home/jrt
> kio (KDirListerCache): [void KDirListerCache::slotEntries(KIO::Job*, const \
> KIO::UDSEntryList&)] new entries for file:/home/jrt kdecore (KProcIO): KPIO::readln
> kdecore (KIconEffect): Image size src != overlay
> kio (KDirListerCache): [void KDirListerCache::slotResult(KIO::Job*)] finished \
> listing file:/home/jrt kio (KTrader): KServiceTypeProfile::offers( ThumbCreator, )
> kio (KTrader): Returning 12 offers
> konqueror: [void KIO::PreviewJob::emitFailed(const KFileItem*)]
> konqueror: [void KIO::PreviewJob::emitFailed(const KFileItem*)]
> konqueror: [void KIO::PreviewJob::emitFailed(const KFileItem*)]
> konqueror: [void KIO::PreviewJob::emitFailed(const KFileItem*)]
> konqueror: [void KIO::PreviewJob::emitFailed(const KFileItem*)]
> konqueror: [void KIO::PreviewJob::emitFailed(const KFileItem*)]
> konqueror: [void KIO::PreviewJob::emitFailed(const KFileItem*)]
> konqueror: [void KIO::PreviewJob::emitFailed(const KFileItem*)]
> konqueror: [void KIO::PreviewJob::emitFailed(const KFileItem*)]
> konqueror: [void KIO::PreviewJob::emitFailed(const KFileItem*)]
> konqueror: [void KIO::PreviewJob::emitFailed(const KFileItem*)]
> konqueror: [void KIO::PreviewJob::emitFailed(const KFileItem*)]
> konqueror: [void KIO::PreviewJob::emitFailed(const KFileItem*)]
> konqueror: [void KIO::PreviewJob::emitFailed(const KFileItem*)]
> konqueror: [void KIO::PreviewJob::emitFailed(const KFileItem*)]
> konqueror: [void KIO::PreviewJob::emitFailed(const KFileItem*)]
> konqueror: [void KIO::PreviewJob::emitFailed(const KFileItem*)]
> konqueror: [void KIO::PreviewJob::emitFailed(const KFileItem*)]
> konqueror: [void KIO::PreviewJob::emitFailed(const KFileItem*)]
> konqueror: [void KIO::PreviewJob::emitFailed(const KFileItem*)]
> konqueror: [void KIO::PreviewJob::emitFailed(const KFileItem*)]
> konqueror: [void KIO::PreviewJob::emitFailed(const KFileItem*)]
> konqueror: [void KIO::PreviewJob::emitFailed(const KFileItem*)]
> konqueror: [void KIO::PreviewJob::emitFailed(const KFileItem*)]
> konqueror: [void KIO::PreviewJob::emitFailed(const KFileItem*)]
> konqueror: [void KIO::PreviewJob::emitFailed(const KFileItem*)]
> konqueror: [void KIO::PreviewJob::emitFailed(const KFileItem*)]
> konqueror: [void KIO::PreviewJob::emitFailed(const KFileItem*)]
> konqueror: [void KIO::PreviewJob::emitFailed(const KFileItem*)]
> konqueror: [void KIO::PreviewJob::emitFailed(const KFileItem*)]
> konqueror: [void KIO::PreviewJob::emitFailed(const KFileItem*)]
> konqueror: [void KIO::PreviewJob::emitFailed(const KFileItem*)]
> konqueror: [void KIO::PreviewJob::emitFailed(const KFileItem*)]
> konqueror: [void KIO::PreviewJob::emitFailed(const KFileItem*)]
> konqueror: [void KIO::PreviewJob::emitFailed(const KFileItem*)]
> konqueror: [void KIO::PreviewJob::emitFailed(const KFileItem*)]
> konqueror: [void KIO::PreviewJob::emitFailed(const KFileItem*)]
> konqueror: [void KIO::PreviewJob::emitFailed(const KFileItem*)]
> konqueror: [void KIO::PreviewJob::emitFailed(const KFileItem*)]
> konqueror: [void KIO::PreviewJob::emitFailed(const KFileItem*)]
> konqueror: [void KIO::PreviewJob::emitFailed(const KFileItem*)]
> konqueror: [void KIO::PreviewJob::emitFailed(const KFileItem*)]
> konqueror: [void KIO::PreviewJob::emitFailed(const KFileItem*)]
> konqueror: [void KIO::PreviewJob::emitFailed(const KFileItem*)]
> konqueror: [void KIO::PreviewJob::emitFailed(const KFileItem*)]
> konqueror: [void KIO::PreviewJob::emitFailed(const KFileItem*)]
> konqueror: [void KIO::PreviewJob::emitFailed(const KFileItem*)]
> konqueror: [void KIO::PreviewJob::emitFailed(const KFileItem*)]
> konqueror: [void KIO::PreviewJob::emitFailed(const KFileItem*)]
> konqueror: [void KIO::PreviewJob::emitFailed(const KFileItem*)]
> konqueror: [void KIO::PreviewJob::emitFailed(const KFileItem*)]
> konqueror: [void KIO::PreviewJob::emitFailed(const KFileItem*)]
> konqueror: [void KIO::PreviewJob::emitFailed(const KFileItem*)]
> konqueror: [void KIO::PreviewJob::emitFailed(const KFileItem*)]
> konqueror: [void KIO::PreviewJob::determineNextFile()]
> konqueror: KonqKfmIconView::slotRenderingFinished()
> konqueror: KonqKfmIconView completed() after rendering
> konqueror: KonqView::slotCompleted hasPending=false
> libkonq: ## addToHistory: file:/home/jrtTyped URL: , Title: file:/home/jrt
> konqueror: [void KonqView::setLoading(bool, bool)] loading=false hasPending=false
> KFileMetaInfo: KFileMetaInfo( /home/jrt/WORK, inode/directory, what )
> KFileMetaInfo: mimetype is inode/directory
> KFileMetaInfo: need to look for a plugin to load
> kio (KTrader): KServiceTypeProfile::offers( inode/directory,KFilePlugin )
> kio (KTrader): Returning 1 offers
> KFileMetaInfo: loaded a plugin for inode/directory
> kio (KTrader): KServiceTypeProfile::offers( inode/directory,KFilePlugin )
> kio (KTrader): Returning 1 offers
> kio (KTrader): KServiceTypeProfile::offers( inode/directory,KFilePlugin )
> kio (KTrader): Returning 1 offers
> KFileMetainfo (plugins): Items(Items) -> int
> KFileMetainfo (plugins): Size(Size) -> int
> KFileMetaInfo: found a plugin
> KFileMetaInfo: currently loaded plugins:
> KFileMetaInfo: inode/directory: KFolderPlugin
> KFileMetaInfo: Found mimetype info for inode/directory
> KFileMetaInfo: mimetype is inode/directory
> KFileMetaInfo: plugin already loaded
> KFileMetaInfo: currently loaded plugins:
> KFileMetaInfo: inode/directory: KFolderPlugin
> KFileMetaInfo: KFileMetaInfogroup inserting a Items
> KFileMetaInfo: KFileMetaInfogroup inserting a Size
> KFileMetaInfo: Item Items
> KFileMetaInfo: Item Size
> kio (KIOJob): Job::kill this=0x8296378 m_progressId=0 quietly=true

Now, are you saying that when I remove the debug code that these things
will not be done?  I know that if I remove the debug that they will NOT
be reported and it will run faster, but I presume that they will still 
be done.

--
JRT

 
> > 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