@@ -3,7 +3,6 @@ use core::iter::TrustedLen;
33use super :: * ;
44
55#[ bench]
6- #[ cfg_attr( miri, ignore) ] // isolated Miri does not support benchmarks
76fn bench_push_back_100 ( b : & mut test:: Bencher ) {
87 let mut deq = VecDeque :: with_capacity ( 101 ) ;
98 b. iter ( || {
@@ -16,7 +15,6 @@ fn bench_push_back_100(b: &mut test::Bencher) {
1615}
1716
1817#[ bench]
19- #[ cfg_attr( miri, ignore) ] // isolated Miri does not support benchmarks
2018fn bench_push_front_100 ( b : & mut test:: Bencher ) {
2119 let mut deq = VecDeque :: with_capacity ( 101 ) ;
2220 b. iter ( || {
@@ -29,12 +27,15 @@ fn bench_push_front_100(b: &mut test::Bencher) {
2927}
3028
3129#[ bench]
32- #[ cfg_attr( miri, ignore) ] // isolated Miri does not support benchmarks
3330fn bench_pop_back_100 ( b : & mut test:: Bencher ) {
34- let mut deq = VecDeque :: < i32 > :: with_capacity ( 101 ) ;
31+ let size = 100 ;
32+ let mut deq = VecDeque :: < i32 > :: with_capacity ( size+1 ) ;
33+ // We'll mess with private state to pretend like `deq` is filled.
34+ // Make sure the buffer is initialized so that we don't read uninit memory.
35+ unsafe { deq. ptr ( ) . write_bytes ( 0u8 , size+1 ) } ;
3536
3637 b. iter ( || {
37- deq. head = 100 ;
38+ deq. head = size ;
3839 deq. tail = 0 ;
3940 while !deq. is_empty ( ) {
4041 test:: black_box ( deq. pop_back ( ) ) ;
@@ -43,9 +44,9 @@ fn bench_pop_back_100(b: &mut test::Bencher) {
4344}
4445
4546#[ bench]
46- #[ cfg_attr( miri, ignore) ] // isolated Miri does not support benchmarks
4747fn bench_retain_whole_10000 ( b : & mut test:: Bencher ) {
48- let v = ( 1 ..100000 ) . collect :: < VecDeque < u32 > > ( ) ;
48+ let size = if cfg ! ( miri) { 1000 } else { 100000 } ;
49+ let v = ( 1 ..size) . collect :: < VecDeque < u32 > > ( ) ;
4950
5051 b. iter ( || {
5152 let mut v = v. clone ( ) ;
@@ -54,9 +55,9 @@ fn bench_retain_whole_10000(b: &mut test::Bencher) {
5455}
5556
5657#[ bench]
57- #[ cfg_attr( miri, ignore) ] // isolated Miri does not support benchmarks
5858fn bench_retain_odd_10000 ( b : & mut test:: Bencher ) {
59- let v = ( 1 ..100000 ) . collect :: < VecDeque < u32 > > ( ) ;
59+ let size = if cfg ! ( miri) { 1000 } else { 100000 } ;
60+ let v = ( 1 ..size) . collect :: < VecDeque < u32 > > ( ) ;
6061
6162 b. iter ( || {
6263 let mut v = v. clone ( ) ;
@@ -65,23 +66,26 @@ fn bench_retain_odd_10000(b: &mut test::Bencher) {
6566}
6667
6768#[ bench]
68- #[ cfg_attr( miri, ignore) ] // isolated Miri does not support benchmarks
6969fn bench_retain_half_10000 ( b : & mut test:: Bencher ) {
70- let v = ( 1 ..100000 ) . collect :: < VecDeque < u32 > > ( ) ;
70+ let size = if cfg ! ( miri) { 1000 } else { 100000 } ;
71+ let v = ( 1 ..size) . collect :: < VecDeque < u32 > > ( ) ;
7172
7273 b. iter ( || {
7374 let mut v = v. clone ( ) ;
74- v. retain ( |x| * x > 50000 )
75+ v. retain ( |x| * x > size/ 2 )
7576 } )
7677}
7778
7879#[ bench]
79- #[ cfg_attr( miri, ignore) ] // isolated Miri does not support benchmarks
8080fn bench_pop_front_100 ( b : & mut test:: Bencher ) {
81- let mut deq = VecDeque :: < i32 > :: with_capacity ( 101 ) ;
81+ let size = 100 ;
82+ let mut deq = VecDeque :: < i32 > :: with_capacity ( size+1 ) ;
83+ // We'll mess with private state to pretend like `deq` is filled.
84+ // Make sure the buffer is initialized so that we don't read uninit memory.
85+ unsafe { deq. ptr ( ) . write_bytes ( 0u8 , size+1 ) } ;
8286
8387 b. iter ( || {
84- deq. head = 100 ;
88+ deq. head = size ;
8589 deq. tail = 0 ;
8690 while !deq. is_empty ( ) {
8791 test:: black_box ( deq. pop_front ( ) ) ;
0 commit comments