File tree 2 files changed +25
-0
lines changed
2 files changed +25
-0
lines changed Original file line number Diff line number Diff line change @@ -367,3 +367,27 @@ fn bench_partial_cmp(b: &mut Bencher) {
367
367
fn bench_lt ( b : & mut Bencher ) {
368
368
b. iter ( || ( 0 ..100000 ) . map ( black_box) . lt ( ( 0 ..100000 ) . map ( black_box) ) )
369
369
}
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
+ }
Original file line number Diff line number Diff line change 3
3
#![ feature( flt2dec) ]
4
4
#![ feature( int_log) ]
5
5
#![ feature( test) ]
6
+ #![ feature( trusted_random_access) ]
6
7
7
8
extern crate test;
8
9
You can’t perform that action at this time.
0 commit comments