about summary refs log tree commit diff
diff options
context:
space:
mode:
authorThe8472 <git@infinite-source.de>2020-01-25 20:08:46 +0100
committerThe8472 <git@infinite-source.de>2020-09-03 20:59:28 +0200
commit6ad133443a7975b2e86a3bbba16da33c769eeabc (patch)
tree1050dba10459da9d491496f57cc16e1d5f32a2d9
parenta7a8b52e918500a36b48f0b123b20fd53a159403 (diff)
downloadrust-6ad133443a7975b2e86a3bbba16da33c769eeabc.tar.gz
rust-6ad133443a7975b2e86a3bbba16da33c769eeabc.zip
add benchmark to cover in-place extend
-rw-r--r--library/alloc/benches/vec.rs14
1 files changed, 14 insertions, 0 deletions
diff --git a/library/alloc/benches/vec.rs b/library/alloc/benches/vec.rs
index 39f67c664d4..1019503a841 100644
--- a/library/alloc/benches/vec.rs
+++ b/library/alloc/benches/vec.rs
@@ -237,6 +237,20 @@ fn do_bench_extend_from_slice(b: &mut Bencher, dst_len: usize, src_len: usize) {
 }
 
 #[bench]
+fn bench_extend_recycle(b: &mut Bencher) {
+    let mut data = vec![0; 1000];
+
+    b.iter(|| {
+        let tmp = std::mem::replace(&mut data, Vec::new());
+        let mut to_extend = black_box(Vec::new());
+        to_extend.extend(tmp.into_iter());
+        std::mem::replace(&mut data, black_box(to_extend));
+    });
+
+    black_box(data);
+}
+
+#[bench]
 fn bench_extend_from_slice_0000_0000(b: &mut Bencher) {
     do_bench_extend_from_slice(b, 0, 0)
 }