diff options
| author | bors <bors@rust-lang.org> | 2021-08-21 23:35:54 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2021-08-21 23:35:54 +0000 |
| commit | 9faa714154dbc03faa174a7d4f72d6bbbfd61f7c (patch) | |
| tree | 1777530d1b9e9c53d01d6025aee0e8f4800763d2 /compiler/rustc_parse/src/parser/expr.rs | |
| parent | d3e2578c31688619ddc0a10ddf8543bf4ebcba5b (diff) | |
| parent | e32f4c06d34ecb4b55b678bbff35d8a77f81cf16 (diff) | |
| download | rust-9faa714154dbc03faa174a7d4f72d6bbbfd61f7c.tar.gz rust-9faa714154dbc03faa174a7d4f72d6bbbfd61f7c.zip | |
Auto merge of #88075 - Xuanwo:vec_deque_retain, r=dtolnay
Optimize unnecessary check in VecDeque::retain This pr is highly inspired by https://github.com/rust-lang/rust/pull/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 ```rust 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 ```rust 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 <github@xuanwo.io>
Diffstat (limited to 'compiler/rustc_parse/src/parser/expr.rs')
0 files changed, 0 insertions, 0 deletions
