about summary refs log tree commit diff
path: root/library/alloc
diff options
context:
space:
mode:
authorTennyZhuang <zty0826@gmail.com>2021-08-16 09:51:10 +0800
committerTennyZhuang <zty0826@gmail.com>2021-09-17 02:55:12 +0800
commit20e14e4030744a3dc0e9bfc8ad2f17000ed748ce (patch)
treee396c38d8cbc8389e7b76b52402d93c1afa83336 /library/alloc
parentd1d8145dffde1092135b571d1d19205fe2a8fc44 (diff)
downloadrust-20e14e4030744a3dc0e9bfc8ad2f17000ed748ce.tar.gz
rust-20e14e4030744a3dc0e9bfc8ad2f17000ed748ce.zip
Add benchmark for Vec::retain
Diffstat (limited to 'library/alloc')
-rw-r--r--library/alloc/benches/vec.rs15
1 files changed, 15 insertions, 0 deletions
diff --git a/library/alloc/benches/vec.rs b/library/alloc/benches/vec.rs
index c93a493cadb..8e1d374b5d4 100644
--- a/library/alloc/benches/vec.rs
+++ b/library/alloc/benches/vec.rs
@@ -732,3 +732,18 @@ fn bench_flat_map_collect(b: &mut Bencher) {
     let v = vec![777u32; 500000];
     b.iter(|| v.iter().flat_map(|color| color.rotate_left(8).to_be_bytes()).collect::<Vec<_>>());
 }
+
+#[bench]
+fn bench_retain_100000(b: &mut Bencher) {
+    let v = (1..=100000).collect::<Vec<u32>>();
+    b.iter(|| {
+        let mut v = v.clone();
+        v.retain(|x| x & 1 == 0)
+    });
+}
+
+#[bench]
+fn bench_retain_whole_100000(b: &mut Bencher) {
+    let mut v = black_box(vec![826u32; 100000]);
+    b.iter(|| v.retain(|x| *x == 826u32));
+}