-
-
Notifications
You must be signed in to change notification settings - Fork 5.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Make QuickerSort efficient for non-homogonous eltype #47973
Conversation
… to make partition! type stable for non-concrete eltype
@nanosoldier |
Your benchmark job has completed - no performance regressions were detected. A full report can be found here. |
@nanosoldier |
Your benchmark job has completed - possible performance regressions were detected. A full report can be found here. |
Much better, though still not perfect
With this and #47966 I believe all the BaseBenchmark regressions in runtime will be gone, though regressions in allocations will remain & some will not correspond to compensating improvements in runtime. Further, using JuliaCI/BaseBenchmarks.jl#305 will also likely still show real regressions. I'll keep looking for regressions once this and #47966 merge. I'll post here when I get the benchmark results from running JuliaCI/BaseBenchmarks.jl#305 locally across this PR. |
Local tests reveal no regressions & memory improvements for "mixed eltype with by order" |
Bump. I think this is ready to go. The remaining more minor regression is likely due to a different underlying cause. I'll probably merge it in a couple of days if there are no objections |
This is orthogonal to #47966 so I'm not concerned about semantic merge conflicts |
Running nanosoldier here to search for possible remaining regressions to fix before we release 1.9 @nanosoldier |
@nanosoldier |
Your benchmark job has completed - possible performance regressions were detected. A full report can be found here. |
Is QuickerSort what you ended up calling your stable quicksort algorithm? |
Yes (reasoning); it is probably not too late to rename it if you have a better idea. (nobody seems to be using it by name) |
I think calling it |
Precisely. |
I still think |
I prefer |
* set `v[j] = pivot` in partition rather than returning pivot to caller to make partition! type stable for non-concrete eltype (cherry picked from commit 54aa57c)
Set
v[j] = pivot
inpartition!
rather than returning pivot to caller to makepartition!
type stable for non-concrete eltypeThis is intended to address the regression in master vs 1.8 revealed by nanosoldier
[link to motivating benchmark results]