<table><tr><td style="">markg added a comment.
</td><a style="text-decoration: none; padding: 4px 8px; margin: 0 8px 8px; float: right; color: #464C5C; font-weight: bold; border-radius: 3px; background-color: #F7F7F9; background-image: linear-gradient(to bottom,#fff,#f1f0f1); display: inline-block; border: 1px solid rgba(71,87,120,.2);" href="https://phabricator.kde.org/D10857" rel="noreferrer">View Revision</a></tr></table><br /><div><div><blockquote style="border-left: 3px solid #8C98B8;
color: #6B748C;
font-style: italic;
margin: 4px 0 12px 0;
padding: 8px 12px;
background-color: #F8F9FC;">
<div style="font-style: normal;
padding-bottom: 4px;">In <a href="https://phabricator.kde.org/D10857#214867" style="background-color: #e7e7e7;
border-color: #e7e7e7;
border-radius: 3px;
padding: 0 4px;
font-weight: bold;
color: black;text-decoration: none;" rel="noreferrer">D10857#214867</a>, <a href="https://phabricator.kde.org/p/jtamate/" style="
border-color: #f1f7ff;
color: #19558d;
background-color: #f1f7ff;
border: 1px solid transparent;
border-radius: 3px;
font-weight: bold;
padding: 0 4px;" rel="noreferrer">@jtamate</a> wrote:</div>
<div style="margin: 0;
padding: 0;
border: 0;
color: rgb(107, 116, 140);"><blockquote style="border-left: 3px solid #8C98B8;
color: #6B748C;
font-style: italic;
margin: 4px 0 12px 0;
padding: 8px 12px;
background-color: #F8F9FC;">
<div style="font-style: normal;
padding-bottom: 4px;">In <a href="https://phabricator.kde.org/D10857#214607" style="background-color: #e7e7e7;
border-color: #e7e7e7;
border-radius: 3px;
padding: 0 4px;
font-weight: bold;
color: black;text-decoration: none;" rel="noreferrer">D10857#214607</a>, <a href="https://phabricator.kde.org/p/dfaure/" style="
border-color: #f1f7ff;
color: #19558d;
background-color: #f1f7ff;
border: 1px solid transparent;
border-radius: 3px;
font-weight: bold;
padding: 0 4px;" rel="noreferrer">@dfaure</a> wrote:</div>
<div style="margin: 0;
padding: 0;
border: 0;
color: rgb(107, 116, 140);"><p>I'm not opposed to the idea, but measuring CPU usage is a rather misleading indicator. What if it takes 10 times longer, because it's progressing much more slowly? ;)</p>
<p>Please at least measure with QElapsedTimer around the sorting (not to be committed, just to gather numbers about the actual performance of this from a user's point of view).<br />
I'm interested in the result ;)</p></div>
</blockquote>
<p>The results are strange. All the results are measured sorting 50.000 small files:</p>
<p>Both Qt are the same version from opensuse.</p>
<p>In an i5, why the difference is so big? recent cpu bugs?<br />
qSort in i3 <br />
274764, 276060 (with 3 directories), 365878, 424506 (without directories)<br />
std::sort in i3<br />
940, 995 (with 3 directories), 2472, 2539 (without directories)</p>
<p>In AMD the results are closer, qSort wins<br />
qSort in AMD<br />
658, 726, 695, 683, 676, 666, 649, 684, 666 (without directories)<br />
std:sort in AMD<br />
843, 839, 878, 896, 925 (without directories)</p></div>
</blockquote>
<p>That surprises me a lot!<br />
I "thought" qSort was just a template or alias to std::sort, but it isn't: <a href="http://code.qt.io/cgit/qt/qtbase.git/tree/src/corelib/tools/qalgorithms.h#n340" class="remarkup-link" target="_blank" rel="noreferrer">http://code.qt.io/cgit/qt/qtbase.git/tree/src/corelib/tools/qalgorithms.h#n340</a><br />
But it isn't which kinda makes my other expectations moot (qSort == std::sort... it isn't)</p>
<p>So i did some tests as well.<br />
50000 filenames sorting them (computer sorting, not the natural one) with std::string and QString (yes, it matters)<br />
Filenames, well, sorta.. Made them up in a loop :)</p>
<p>QString version: <a href="https://p.sc2.nl/r1JTFaf_z" class="remarkup-link" target="_blank" rel="noreferrer">https://p.sc2.nl/r1JTFaf_z</a><br />
qSort: ~220ms<br />
std::sort ~276ms</p>
<p>std::string version: <a href="https://p.sc2.nl/HJ69Y6G_G" class="remarkup-link" target="_blank" rel="noreferrer">https://p.sc2.nl/HJ69Y6G_G</a><br />
qSort: ~100ms<br />
std::sort ~130ms</p>
<p>Note that std::string might not be the fair comparison as it's 8 bit/char. QString is 16.<br />
My compiler (in this rare case) Visual Studio 2017 on an Intel CPU.</p>
<p>I still think it's wise to replace all qSort, if only for it being deprecated. But it does suck a little that qSort beats std::sort.</p></div></div><br /><div><strong>REPOSITORY</strong><div><div>R241 KIO</div></div></div><br /><div><strong>REVISION DETAIL</strong><div><a href="https://phabricator.kde.org/D10857" rel="noreferrer">https://phabricator.kde.org/D10857</a></div></div><br /><div><strong>To: </strong>jtamate, Frameworks, dfaure<br /><strong>Cc: </strong>markg, apol, michaelh<br /></div>