KIconLoader: massive speed improvement for loading unavailable icons

Review Request #128465 - Created July 16, 2016 and submitted

David Faure
cfeck, drosca, mpyne, ogoffart
The code said "unknown icons should be searched for anew each time
[so that installing new icons works]". However this leads to massive
performance issues when opening the file dialog in a dir with many
files for which there is no mimetype icon.
In my case, 293 callgrind.out.* files in one dir (it's ironic that
they would create a huge performance issue...).

To make both sides happy (installing new icons should still work, but
still unknown icons shouldn't lead to a full disk search every time
icon.isNull() or icon.pixmap() is called), let's re-resolve unknown
icons again only after 5 seconds.

Benchmark results for loading an unavailable icon :
before: 43 msecs per iteration    (1897 disk locations checked)
after: 0.013 msecs per iteration  (pixmap found in the on-disk cache)
And the file dialog no longer crawls to a halt in the dir with 293 callgrind files.

Test Plan:



(described in commit log)


  • 1
  • 1
  • 0
  • 2
Description From Last Updated
.constFind() .constEnd() Mark Gaiser Mark Gaiser
Michael Pyne
Mark Gaiser
David Faure
Mark Gaiser
Michael Pyne
David Faure
Michael Pyne
Mark Gaiser
David Faure
Review request changed

Status: Closed (submitted)

Change Summary:

Submitted with commit 6d1abc297486725c891d14c7fd3169f4575ec86d by David Faure to branch master.