about summary refs log tree commit diff
diff options
context:
space:
mode:
authorThe8472 <git@infinite-source.de>2019-11-20 23:37:50 +0100
committerThe8472 <git@infinite-source.de>2020-09-03 20:59:13 +0200
commit8ac96e6a9832d70f9b5d43967cd2680711fa92df (patch)
treed690050d5d42724c2a7c3e14229c053a1e25acfa
parentbb4f888a590b1fe24a386f3f40bad8537c3232a9 (diff)
downloadrust-8ac96e6a9832d70f9b5d43967cd2680711fa92df.tar.gz
rust-8ac96e6a9832d70f9b5d43967cd2680711fa92df.zip
cyclic in-place reuse bench
-rw-r--r--library/alloc/benches/vec.rs20
1 files changed, 20 insertions, 0 deletions
diff --git a/library/alloc/benches/vec.rs b/library/alloc/benches/vec.rs
index 870bb3d1402..409bc49b031 100644
--- a/library/alloc/benches/vec.rs
+++ b/library/alloc/benches/vec.rs
@@ -482,6 +482,26 @@ bench_in_place![
 ];
 
 #[bench]
+fn bench_in_place_recycle(b: &mut test::Bencher) {
+    let mut data = vec![0; 1000];
+
+    b.iter(|| {
+        let tmp = std::mem::replace(&mut data, Vec::new());
+        std::mem::replace(
+            &mut data,
+            black_box(
+                tmp.into_iter()
+                    .enumerate()
+                    .map(|(idx, e)| idx.wrapping_add(e))
+                    .fuse()
+                    .peekable()
+                    .collect::<Vec<usize>>(),
+            ),
+        );
+    });
+}
+
+#[bench]
 fn bench_chain_collect(b: &mut test::Bencher) {
     let data = black_box([0; LEN]);
     b.iter(|| data.iter().cloned().chain([1].iter().cloned()).collect::<Vec<_>>());