diff options
| author | Mara Bos <m-ou.se@m-ou.se> | 2021-03-09 09:05:18 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-03-09 09:05:18 +0000 |
| commit | c013dc01f1babb8f8e0dddcfdc69a84e8249161a (patch) | |
| tree | a74dc5634cb8fb4d3f5c7048374cab88fa9659c7 /compiler/rustc_llvm/llvm-wrapper/CoverageMappingWrapper.cpp | |
| parent | 4b9f5cc4c10a161047475cb9bbe02c4fda57fb07 (diff) | |
| parent | 095bf01649a202b088c817bcdd3612d2604187e0 (diff) | |
| download | rust-c013dc01f1babb8f8e0dddcfdc69a84e8249161a.tar.gz rust-c013dc01f1babb8f8e0dddcfdc69a84e8249161a.zip | |
Rollup merge of #81127 - hanmertens:binary_heap_sift_down_perf, r=dtolnay
Improve sift_down performance in BinaryHeap Replacing `child < end - 1` with `child <= end.saturating_sub(2)` in `BinaryHeap::sift_down_range` (surprisingly) results in a significant speedup of `BinaryHeap::into_sorted_vec`. The same substitution can be done for `BinaryHeap::sift_down_to_bottom`, which causes a slight but probably statistically insignificant speedup for `BinaryHeap::pop`. It's interesting that benchmarks aside from `bench_into_sorted_vec` are barely affected, even those that do use `sift_down_*` methods internally. | Benchmark | Before (ns/iter) | After (ns/iter) | Speedup | |--------------------------|------------------|-----------------|---------| | bench_find_smallest_1000<sup>1</sup> | 392,617 | 385,200 | 1.02 | | bench_from_vec<sup>1</sup> | 506,016 | 504,444 | 1.00 | | bench_into_sorted_vec<sup>1</sup> | 476,869 | 384,458 | 1.24 | | bench_peek_mut_deref_mut<sup>3</sup> | 518,753 | 519,792 | 1.00 | | bench_pop<sup>2</sup> | 446,718 | 444,409 | 1.01 | | bench_push<sup>3</sup> | 772,481 | 770,208 | 1.00 | <sup>1</sup>: internally calls `sift_down_range` <sup>2</sup>: internally calls `sift_down_to_bottom` <sup>3</sup>: should not be affected
Diffstat (limited to 'compiler/rustc_llvm/llvm-wrapper/CoverageMappingWrapper.cpp')
0 files changed, 0 insertions, 0 deletions
