rust/library
Mara Bos 40889819ee
Rollup merge of #78857 - SkiFire13:bheap-opt, r=KodrAus
Improve BinaryHeap performance

By changing the condition in the loops from `child < end` to `child < end - 1` we're guaranteed that `right = child + 1 < end` and since finding the index of the biggest sibling can be done with an arithmetic operation we can remove a branch from the loop body. The case where there's no right child, i.e. `child == end - 1` is instead handled outside the loop, after it ends; note that if the loops ends early we can use `return` instead of `break` since the check `child == end - 1` will surely fail.

I've also removed a call to `<[T]>::swap` that was hiding a bound check that [wasn't being optimized by LLVM](https://godbolt.org/z/zrhdGM).

A quick benchmarks on my pc shows that the gains are pretty significant:

|name                 |before ns/iter  |after ns/iter  |diff ns/iter  |diff %    |speedup |
|---------------------|----------------|---------------|--------------|----------|--------|
|find_smallest_1000   | 352,565        | 260,098       |     -92,467  | -26.23%  | x 1.36 |
|from_vec             | 676,795        | 473,934       |    -202,861  | -29.97%  | x 1.43 |
|into_sorted_vec      | 469,511        | 304,275       |    -165,236  | -35.19%  | x 1.54 |
|pop                  | 483,198        | 373,778       |    -109,420  | -22.64%  | x 1.29 |

The other 2 benchmarks for `BinaryHeap` (`peek_mut_deref_mut` and `push`) weren't impacted and as such didn't show any significant change.
2020-11-12 19:46:11 +01:00
..
alloc Rollup merge of #78857 - SkiFire13:bheap-opt, r=KodrAus 2020-11-12 19:46:11 +01:00
backtrace@8b8ea53b56 Bump backtrace-rs to enable Mach-O support on iOS. 2020-10-23 13:47:09 +02:00
core Rollup merge of #78216 - workingjubilee:duration-zero, r=m-ou-se 2020-11-11 20:58:52 +01:00
panic_abort
panic_unwind Fix even more URLs 2020-11-05 20:11:29 +01:00
proc_macro Rollup merge of #78465 - est31:proc_macro_to_string, r=jyn514 2020-11-05 10:29:42 +01:00
profiler_builtins
rtstartup
rustc-std-workspace-alloc
rustc-std-workspace-core
rustc-std-workspace-std
std Auto merge of #78965 - jryans:emscripten-threads-libc, r=kennytm 2020-11-12 05:52:17 +00:00
stdarch@3c3664355e Update stdarch submodule 2020-10-01 13:06:22 -04:00
term
test Rollup merge of #78065 - tshepang:nits, r=dtolnay 2020-11-08 13:36:01 +01:00
unwind allow using the system-wide llvm-libunwind as the unwinder 2020-10-21 14:45:58 +02:00