]> git.lizzy.rs Git - rust.git/blobdiff - library/core/benches/iter.rs
Auto merge of #103279 - compiler-errors:normalize-hack-back, r=lcnr
[rust.git] / library / core / benches / iter.rs
index 4b40485d207c8c6a9cccc13ac905a86575a26afa..38887f29af1537733249ec7a3da964a6c0b25ed4 100644 (file)
@@ -1,4 +1,6 @@
 use core::iter::*;
+use core::mem;
+use core::num::Wrapping;
 use test::{black_box, Bencher};
 
 #[bench]
@@ -398,3 +400,21 @@ fn bench_trusted_random_access_adapters(b: &mut Bencher) {
         acc
     })
 }
+
+/// Exercises the iter::Copied specialization for slice::Iter
+#[bench]
+fn bench_copied_array_chunks(b: &mut Bencher) {
+    let v = vec![1u8; 1024];
+
+    b.iter(|| {
+        black_box(&v)
+            .iter()
+            .copied()
+            .array_chunks::<{ mem::size_of::<u64>() }>()
+            .map(|ary| {
+                let d = u64::from_ne_bytes(ary);
+                Wrapping(d.rotate_left(7).wrapping_add(1))
+            })
+            .sum::<Wrapping<u64>>()
+    })
+}