6
Optimize unnecessary check in VecDeque::retain by Xuanwo · Pull Request #88075 ·...
source link: https://github.com/rust-lang/rust/pull/88075
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
This pr is highly inspired by #88060 which shared the same idea: we can split the for
loop into stages so that we can remove unnecessary checks like del > 0
.
Benchmarks
Before
test collections::vec_deque::tests::bench_retain_half_10000 ... bench: 290,125 ns/iter (+/- 8,717) test collections::vec_deque::tests::bench_retain_odd_10000 ... bench: 291,588 ns/iter (+/- 9,621) test collections::vec_deque::tests::bench_retain_whole_10000 ... bench: 287,426 ns/iter (+/- 9,009)
After
test collections::vec_deque::tests::bench_retain_half_10000 ... bench: 243,940 ns/iter (+/- 8,563) test collections::vec_deque::tests::bench_retain_odd_10000 ... bench: 242,768 ns/iter (+/- 3,903) test collections::vec_deque::tests::bench_retain_whole_10000 ... bench: 202,926 ns/iter (+/- 6,332)
Based on the current benchmark, this PR will improve the perf of VecDeque::retain
by around 16%. For special cases, the improvement will be up to 30%.
Signed-off-by: Xuanwo [email protected]
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK