3 ms·
qsort has to invoke your comparison function repeatedly, which incurs a lot of overhead. Try C++'s std::sort
by zhangxp1998 7y ago
qsort has to invoke your comparison function repeatedly, which incurs a lot of overhead. Try C++'s std::sort
- zhangxp1998 7y agoSee https://gist.github.com/zhangxp1998/0e2fa30656c894017d183e0dbf2d862a https://gist.github.com/zhangxp1998/0e2fa30656c894017d183e0d... for a comparison of quadsort with C++'s std::sort. The compare functions are inlined.
- thedance 7y agoThanks for saving us the time. The punch line: Summarize: Slower than std::sort except on random tail. Also a very important tidbit that std::sort is 10x faster than c's qsort for ordered inputs.
- alexchamberlain 7y agoThis feels a little unfair; the function is invoked the same number of times, but C++ has a mechanism for removing the overhead of calling a function (inlining).
- zhangxp1998 7y agoI looked at disassembly of generated binary, sure, function calls inside quad sort were also inlined.