diff options
| author | Stein Somers <git@steinsomers.be> | 2020-02-02 12:11:41 +0100 |
|---|---|---|
| committer | Stein Somers <git@steinsomers.be> | 2020-03-29 16:05:53 +0200 |
| commit | a6cae3d5cfad59e16afa95926324bf8e93250019 (patch) | |
| tree | 1a338a33630bcbf955cc30c336f2afe115624c1b /src/liballoc | |
| parent | 8ab82b87af4f20b6c0a481e050517103d50263e9 (diff) | |
| download | rust-a6cae3d5cfad59e16afa95926324bf8e93250019.tar.gz rust-a6cae3d5cfad59e16afa95926324bf8e93250019.zip | |
Add benchmarks of drain_filter-like behaviour
Diffstat (limited to 'src/liballoc')
| -rw-r--r-- | src/liballoc/benches/btree/set.rs | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/src/liballoc/benches/btree/set.rs b/src/liballoc/benches/btree/set.rs index d9e75ab7fa4..c4712e2132f 100644 --- a/src/liballoc/benches/btree/set.rs +++ b/src/liballoc/benches/btree/set.rs @@ -63,6 +63,18 @@ pub fn clone_100_and_clear(b: &mut Bencher) { } #[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.len(), 100 / 2); + }) +} + +#[bench] pub fn clone_100_and_into_iter(b: &mut Bencher) { let src = pos(100); b.iter(|| src.clone().into_iter().count()) @@ -116,6 +128,18 @@ pub fn clone_10k_and_clear(b: &mut Bencher) { } #[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.len(), 10_000 / 2); + }) +} + +#[bench] pub fn clone_10k_and_into_iter(b: &mut Bencher) { let src = pos(10_000); b.iter(|| src.clone().into_iter().count()) |
