I'm using pqdsort in my ranges library (slightly modified to support projections, proxy iterators and constexpr evaluation). I think it's fantastic, and it's proven almost always faster (and never slower) than both libc++ and libstdc++ std::sort() in every benchmark I've tried.
Have you given any thought to writing a companion "pdqselect" algorithm to implement std::nth_element()? As far as I know all the mainstream C++ implementations of nth_element use introselect, but it seems that (in principle at least) this algorithm could benefit from the same optimisations that pdqsort uses relative to introsort.
(A quick Google turned up this Rust crate, but it doesn't seem to be part of the Rust standard library yet.)
I'm using
pqdsortin my ranges library (slightly modified to support projections, proxy iterators andconstexprevaluation). I think it's fantastic, and it's proven almost always faster (and never slower) than both libc++ and libstdc++std::sort()in every benchmark I've tried.Have you given any thought to writing a companion "pdqselect" algorithm to implement
std::nth_element()? As far as I know all the mainstream C++ implementations ofnth_elementuse introselect, but it seems that (in principle at least) this algorithm could benefit from the same optimisations that pdqsort uses relative to introsort.(A quick Google turned up this Rust crate, but it doesn't seem to be part of the Rust standard library yet.)