Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
We have a perfectly good implementation of insertion sort available, but don't expose it publicly. It's a great sorting algorithm if the data in known to be mostly sorted (e.g. it was already sorted, and we've only touched a few elements).
I think the benchmarks speak for themselves. On sorted data it completely destroys
sort
(because it just reads the damn thing and calls it a day). Benchmark results are frommake check-collections PLEASE_BENCH=1 NO_REBUILD=1
, Can rebuild with different flags if desired:Other ops: (note: resort is actually competitive on random data up to 100 elements!)
I didn't write any new benches to test e.g. "a couple elements are out of order". I can if it's desired. I also didn't add any unit tests since
resort
is implicitly tested bysort
, for the most part.