Skip to content

Commit e3db41b

Browse files
committed
add benchmark
1 parent 879fb42 commit e3db41b

File tree

2 files changed

+25
-0
lines changed

2 files changed

+25
-0
lines changed

library/core/benches/iter.rs

+24
Original file line numberDiff line numberDiff line change
@@ -367,3 +367,27 @@ fn bench_partial_cmp(b: &mut Bencher) {
367367
fn bench_lt(b: &mut Bencher) {
368368
b.iter(|| (0..100000).map(black_box).lt((0..100000).map(black_box)))
369369
}
370+
371+
#[bench]
372+
fn bench_trusted_random_access_adapters(b: &mut Bencher) {
373+
let vec1: Vec<_> = (0usize..100000).collect();
374+
let vec2 = black_box(vec1.clone());
375+
b.iter(|| {
376+
let mut iter = vec1
377+
.iter()
378+
.copied()
379+
.enumerate()
380+
.map(|(idx, e)| idx.wrapping_add(e))
381+
.zip(vec2.iter().copied())
382+
.map(|(a, b)| a.wrapping_add(b))
383+
.fuse();
384+
let mut acc: usize = 0;
385+
let size = iter.size();
386+
for i in 0..size {
387+
// SAFETY: TRA requirements are satisfied by 0..size iteration and then dropping the
388+
// iterator.
389+
acc = acc.wrapping_add(unsafe { iter.__iterator_get_unchecked(i) });
390+
}
391+
acc
392+
})
393+
}

library/core/benches/lib.rs

+1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
#![feature(flt2dec)]
44
#![feature(int_log)]
55
#![feature(test)]
6+
#![feature(trusted_random_access)]
67

78
extern crate test;
89

0 commit comments

Comments
 (0)