Skip to content

Commit 963d6f7

Browse files
committed
add a benchmark for slice_iter.copied().array_chunks()
1 parent 8be3ce9 commit 963d6f7

File tree

2 files changed

+21
-0
lines changed

2 files changed

+21
-0
lines changed

library/core/benches/iter.rs

+20
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
use core::iter::*;
2+
use core::mem;
3+
use core::num::Wrapping;
24
use test::{black_box, Bencher};
35

46
#[bench]
@@ -398,3 +400,21 @@ fn bench_trusted_random_access_adapters(b: &mut Bencher) {
398400
acc
399401
})
400402
}
403+
404+
/// Exercises the iter::Copied specialization for slice::Iter
405+
#[bench]
406+
fn bench_copied_array_chunks(b: &mut Bencher) {
407+
let v = vec![1u8; 1024];
408+
409+
b.iter(|| {
410+
black_box(&v)
411+
.iter()
412+
.copied()
413+
.array_chunks::<{ mem::size_of::<u64>() }>()
414+
.map(|ary| {
415+
let d = u64::from_ne_bytes(ary);
416+
Wrapping(d.rotate_left(7).wrapping_add(1))
417+
})
418+
.sum::<Wrapping<u64>>()
419+
})
420+
}

library/core/benches/lib.rs

+1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
#![feature(int_log)]
55
#![feature(test)]
66
#![feature(trusted_random_access)]
7+
#![feature(iter_array_chunks)]
78

89
extern crate test;
910

0 commit comments

Comments
 (0)