Skip to content

Commit a6cae3d

Browse files
committed
Add benchmarks of drain_filter-like behaviour
1 parent 8ab82b8 commit a6cae3d

File tree

1 file changed

+24
-0
lines changed
  • src/liballoc/benches/btree

1 file changed

+24
-0
lines changed

Diff for: src/liballoc/benches/btree/set.rs

+24
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,18 @@ pub fn clone_100_and_clear(b: &mut Bencher) {
6262
b.iter(|| src.clone().clear())
6363
}
6464

65+
#[bench]
66+
pub fn clone_100_and_drain_half(b: &mut Bencher) {
67+
let src = pos(100);
68+
b.iter(|| {
69+
let mut set = src.clone();
70+
for i in set.iter().copied().filter(|i| i % 2 == 0).collect::<Vec<_>>() {
71+
set.remove(&i);
72+
}
73+
assert_eq!(set.len(), 100 / 2);
74+
})
75+
}
76+
6577
#[bench]
6678
pub fn clone_100_and_into_iter(b: &mut Bencher) {
6779
let src = pos(100);
@@ -115,6 +127,18 @@ pub fn clone_10k_and_clear(b: &mut Bencher) {
115127
b.iter(|| src.clone().clear())
116128
}
117129

130+
#[bench]
131+
pub fn clone_10k_and_drain_half(b: &mut Bencher) {
132+
let src = pos(10_000);
133+
b.iter(|| {
134+
let mut set = src.clone();
135+
for i in set.iter().copied().filter(|i| i % 2 == 0).collect::<Vec<_>>() {
136+
set.remove(&i);
137+
}
138+
assert_eq!(set.len(), 10_000 / 2);
139+
})
140+
}
141+
118142
#[bench]
119143
pub fn clone_10k_and_into_iter(b: &mut Bencher) {
120144
let src = pos(10_000);

0 commit comments

Comments
 (0)