-
Notifications
You must be signed in to change notification settings - Fork 23
Description
First off, sorry again to have jumped to conclusions on Hacker News. As a programming language guy I'm in the market for a stable sort and Fluxsort seems to have the fundamentals down!
I wanted to know if you're interested in incorporating some or all of what I do into this repository. I'd like to help improve Fluxsort's worst cases and pattern recognition with techniques like pdqsort uses, and expand the interface to support other operations. Some possible topics, which I can also split into individual issues:
- Add more sophisticated benchmarks with subtle patterns
- Candidate randomization to avoid poor pivot selection for patterned as well as random data
- Move the call stack into the memory buffer to avoid stack overflow and improve speed
- Recognize signs of mostly-sorted inputs during pivot selection
- Specialized integer code; maybe SIMD instructions, non-stable optimizations, or hybridization with counting sort
(pdqsort depends on instability a lot, but I think there are usually ways to avoid this)
As evidence that I have some clue what I'm talking about, here's a small improvement: the following inner loop for flux_partition
gives about a 3% speedup in my benchmarks on random 1e6-element 4-byte int arrays.
size_t n=0;
val = cmp(ptx + 0, &piv) <= 0; pta[n] = ptx[0]; pts[0-n] = ptx[0]; n += val;
// etc.
pta += n; pts += 8-n;
ptx += 8;