diff options
| author | Stein Somers <git@steinsomers.be> | 2020-02-08 11:52:14 +0100 |
|---|---|---|
| committer | Stein Somers <git@steinsomers.be> | 2020-03-29 16:05:53 +0200 |
| commit | 0405db3a341a094f421a762a15c14b392fec94f8 (patch) | |
| tree | a3c0a7425b48394703b8897d29100fc6b9fa3b67 /src/liballoc/benches | |
| parent | a6cae3d5cfad59e16afa95926324bf8e93250019 (diff) | |
| download | rust-0405db3a341a094f421a762a15c14b392fec94f8.tar.gz rust-0405db3a341a094f421a762a15c14b392fec94f8.zip | |
BTreeMap/BTreeSet: implement and test drain_filter
Diffstat (limited to 'src/liballoc/benches')
| -rw-r--r-- | src/liballoc/benches/btree/set.rs | 20 | ||||
| -rw-r--r-- | src/liballoc/benches/lib.rs | 1 |
2 files changed, 15 insertions, 6 deletions
diff --git a/src/liballoc/benches/btree/set.rs b/src/liballoc/benches/btree/set.rs index c4712e2132f..2518506b9b5 100644 --- a/src/liballoc/benches/btree/set.rs +++ b/src/liballoc/benches/btree/set.rs @@ -63,13 +63,17 @@ pub fn clone_100_and_clear(b: &mut Bencher) { } #[bench] +pub fn clone_100_and_drain_all(b: &mut Bencher) { + let src = pos(100); + b.iter(|| src.clone().drain_filter(|_| true).count()) +} + +#[bench] pub fn clone_100_and_drain_half(b: &mut Bencher) { let src = pos(100); b.iter(|| { let mut set = src.clone(); - for i in set.iter().copied().filter(|i| i % 2 == 0).collect::<Vec<_>>() { - set.remove(&i); - } + assert_eq!(set.drain_filter(|i| i % 2 == 0).count(), 100 / 2); assert_eq!(set.len(), 100 / 2); }) } @@ -128,13 +132,17 @@ pub fn clone_10k_and_clear(b: &mut Bencher) { } #[bench] +pub fn clone_10k_and_drain_all(b: &mut Bencher) { + let src = pos(10_000); + b.iter(|| src.clone().drain_filter(|_| true).count()) +} + +#[bench] pub fn clone_10k_and_drain_half(b: &mut Bencher) { let src = pos(10_000); b.iter(|| { let mut set = src.clone(); - for i in set.iter().copied().filter(|i| i % 2 == 0).collect::<Vec<_>>() { - set.remove(&i); - } + assert_eq!(set.drain_filter(|i| i % 2 == 0).count(), 10_000 / 2); assert_eq!(set.len(), 10_000 / 2); }) } diff --git a/src/liballoc/benches/lib.rs b/src/liballoc/benches/lib.rs index 951477a24c8..f31717d9fd5 100644 --- a/src/liballoc/benches/lib.rs +++ b/src/liballoc/benches/lib.rs @@ -1,3 +1,4 @@ +#![feature(btree_drain_filter)] #![feature(map_first_last)] #![feature(repr_simd)] #![feature(test)] |
