<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Tue, Jul 28, 2015 at 4:28 PM, David Faure <span dir="ltr"><<a href="mailto:faure@kde.org" target="_blank">faure@kde.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">On Tuesday 14 July 2015 19:28:58 Thomas Lübking wrote:<br>
</span><span class="">> On Dienstag, 14. Juli 2015 19:00:14 CEST, Milian Wolff wrote:<br>
> > On Tuesday, July 14, 2015 11:49:25 AM David Faure wrote:<br>
> >> On Friday 26 June 2015 18:03:00 Frank Reininghaus wrote: ...<br>
> ><br>
> > It has. Querying the current time repeatedly is quite costly,<br>
> > and often shows<br>
> > up in code that extensively uses timers, or<br>
> > QDateTime::currentDateTime() etc.<br>
> ><br>
> > But it's probably still cheaper than querying on-disk meta data<br>
> > in the worst<br>
> > case, esp. on old rotary disks.<br>
><br>
> Actually, checking currentTime() is already the problem here (causing the IO for the timezone stuff), see <a href="http://marc.info/?l=kde-core-devel&m=143533622526705&w=1" rel="noreferrer" target="_blank">http://marc.info/?l=kde-core-devel&m=143533622526705&w=1</a> (the 1st paragraph part of my comment somehow turned into a second-level quote)<br>
><br>
> Comparing a monotic timer (QElapsedTime) is however - at least on linux - close to cost free PLUS: one can have an entirely free "do not check again during this event cycle" flag.<br>
<br>
</span>I used QElapsedTimer in <a href="https://codereview.qt-project.org/122247" rel="noreferrer" target="_blank">https://codereview.qt-project.org/122247</a><br>
and the resulting performance improvements are amazing.<br>
kbuildsycoca5 is twice faster.</blockquote><div><br></div><div>Ohh, interesting! You're optimizing stuff :D</div><div><br></div><div>I just ran "kbuildsycoca5 --noincremental" through kcachegrind without your patch to Qt and i do see one other quite big hot spot you might be interested in.</div><div>In my case the profile collected 1.147.572.920 instructions. Nearly half of all those instructions (516.700.823) are spend in QMimeType::inherits. The cost per QMimeType::inherits call is 52.692 instructions (it's being called 9806 times). That function is heavy! I don't know exactly what it's doing since Qt is build in release mode without debug symbols (system package) so i only see lots of cycles being spend there, not what they are doing.</div><div><br></div><div>You can ignore this message if QMimeType::inherits internally calls the method you optimized thus this function would be greatly improved already. Internally it's calling this function: <a href="http://code.qt.io/cgit/qt/qtbase.git/tree/src/corelib/mimetypes/qmimedatabase.cpp#n216">http://code.qt.io/cgit/qt/qtbase.git/tree/src/corelib/mimetypes/qmimedatabase.cpp#n216</a></div></div></div></div>