4 ms·
There is a quirk (almost a bug?) in FreeBSD's qsort where it will switch to insertsort for the whole array under certain conditions, which we hit in production
by nice2meetu 3y ago
There is a quirk (almost a bug?) in FreeBSD's qsort where it will switch to insertsort for the whole array under certain conditions, which we hit in production given how our data was arranged.
(I think this was the check)
https://github.com/freebsd/freebsd-src/blob/main/lib/libc/stdlib/qsort.c#L171 https://github.com/freebsd/freebsd-src/blob/main/lib/libc/st...
- stefan_ 3y agoI like how someone felt the need to write out insertion sort in some 4 line code golf challenge in the midst of qsort. This right here is why no one wants to deal with C anymore.
- erk__ 3y agoDid a bit of digging and found that there used to be a comment for why it was done, but it got removed [0] when they switched to the implementation from Bentley & McIlroy's "engineering a sort function" [1] around 1992. [0]: https://github.com/weiss/original-bsd/commit/d3fcf71e0db57cb346606f3e100c17a565b1cc2f#diff-80cbaaf17a9c3baf31292416f97d13837515bdc13c94eedc285a79504409c708L167-L181 https://github.com/weiss/original-bsd/commit/d3fcf71e0db57cb... [1]: https://cs.fit.edu/~pkc/classes/writing/papers/bentley93engineering.pdf https://cs.fit.edu/~pkc/classes/writing/papers/bentley93engi...