I think it's a good rule of thumb to say "if you need to sort large quantities of untrusted data you should probably use mergesort".
I think it's a good rule of thumb to say "if you need to sort large quantities of untrusted data you should probably use mergesort".
Heapsort
http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.22....
Looks like the algo is more complicated, but surely implementable. In most modern architectures, the key for performance is how one exploits the caching behavior. Quicksort is very cache friendly, as well as the common implementation of merge sort. Not so for heapsort.
Glibc is the only libc I'm aware of that implements mergesort. It still falls back to quicksort for large inputs though.
Also, nice little write-up, thanks. I also dig the extracted sort implementations you dug-out: https://github.com/matslina/qsort
Application level DDoS's leave the kernel/network/sockets layers exposed for exploitation. Since their tasks will take priority over user's applications.
So what's the benefit of that, just that you can maximize the chaos you cause by attacking in two different ways?
Basically its the old, can't see the forest past the trees routine.
Its more gaming the operators then the system.