@@ -23,7 +23,7 @@ index aadb0dc9c40..64bce0ff8c0 100644
23
23
assert_eq!(core::mem::size_of::<LeafNode<(), ()>>(), 16);
24
24
assert_eq!(core::mem::size_of::<LeafNode<i64, i64>>(), 16 + CAPACITY * 2 * 8);
25
25
diff --git a/library/alloc/src/collections/vec_deque/tests.rs b/library/alloc/src/collections/vec_deque/tests.rs
26
- index 1f2daef213c..ebd5bc72fc7 100644
26
+ index 1f2daef213c..a103531a20f 100644
27
27
--- a/library/alloc/src/collections/vec_deque/tests.rs
28
28
+++ b/library/alloc/src/collections/vec_deque/tests.rs
29
29
@@ -3,7 +3,6 @@
@@ -42,43 +42,79 @@ index 1f2daef213c..ebd5bc72fc7 100644
42
42
fn bench_push_front_100(b: &mut test::Bencher) {
43
43
let mut deq = VecDeque::with_capacity(101);
44
44
b.iter(|| {
45
- @@ -29,7 +27,6 @@ fn bench_push_front_100(b: &mut test::Bencher) {
45
+ @@ -29,12 +27,15 @@ fn bench_push_front_100(b: &mut test::Bencher) {
46
46
}
47
47
48
48
#[bench]
49
49
- #[cfg_attr(miri, ignore)] // isolated Miri does not support benchmarks
50
50
fn bench_pop_back_100(b: &mut test::Bencher) {
51
- let mut deq = VecDeque::<i32>::with_capacity(101);
51
+ - let mut deq = VecDeque::<i32>::with_capacity(101);
52
+ + let size = 100;
53
+ + let mut deq = VecDeque::<i32>::with_capacity(size+1);
54
+ + // We'll mess with private state to pretend like `deq` is filled.
55
+ + // Make sure the buffer is initialized so that we don't read uninit memory.
56
+ + unsafe { deq.ptr().write_bytes(0u8, size+1) };
52
57
53
- @@ -43,7 +40,6 @@ fn bench_pop_back_100(b: &mut test::Bencher) {
58
+ b.iter(|| {
59
+ - deq.head = 100;
60
+ + deq.head = size;
61
+ deq.tail = 0;
62
+ while !deq.is_empty() {
63
+ test::black_box(deq.pop_back());
64
+ @@ -43,9 +44,9 @@ fn bench_pop_back_100(b: &mut test::Bencher) {
54
65
}
55
66
56
67
#[bench]
57
68
- #[cfg_attr(miri, ignore)] // isolated Miri does not support benchmarks
58
69
fn bench_retain_whole_10000(b: &mut test::Bencher) {
59
- let v = (1..100000).collect::<VecDeque<u32>>();
70
+ - let v = (1..100000).collect::<VecDeque<u32>>();
71
+ + let size = if cfg!(miri) { 1000 } else { 100000 };
72
+ + let v = (1..size).collect::<VecDeque<u32>>();
60
73
61
- @@ -54,7 +50,6 @@ fn bench_retain_whole_10000(b: &mut test::Bencher) {
74
+ b.iter(|| {
75
+ let mut v = v.clone();
76
+ @@ -54,9 +55,9 @@ fn bench_retain_whole_10000(b: &mut test::Bencher) {
62
77
}
63
78
64
79
#[bench]
65
80
- #[cfg_attr(miri, ignore)] // isolated Miri does not support benchmarks
66
81
fn bench_retain_odd_10000(b: &mut test::Bencher) {
67
- let v = (1..100000).collect::<VecDeque<u32>>();
82
+ - let v = (1..100000).collect::<VecDeque<u32>>();
83
+ + let size = if cfg!(miri) { 1000 } else { 100000 };
84
+ + let v = (1..size).collect::<VecDeque<u32>>();
68
85
69
- @@ -65,7 +60,6 @@ fn bench_retain_odd_10000(b: &mut test::Bencher) {
86
+ b.iter(|| {
87
+ let mut v = v.clone();
88
+ @@ -65,23 +66,26 @@ fn bench_retain_odd_10000(b: &mut test::Bencher) {
70
89
}
71
90
72
91
#[bench]
73
92
- #[cfg_attr(miri, ignore)] // isolated Miri does not support benchmarks
74
93
fn bench_retain_half_10000(b: &mut test::Bencher) {
75
- let v = (1..100000).collect::<VecDeque<u32>>();
94
+ - let v = (1..100000).collect::<VecDeque<u32>>();
95
+ + let size = if cfg!(miri) { 1000 } else { 100000 };
96
+ + let v = (1..size).collect::<VecDeque<u32>>();
76
97
77
- @@ -76,7 +70,6 @@ fn bench_retain_half_10000(b: &mut test::Bencher) {
98
+ b.iter(|| {
99
+ let mut v = v.clone();
100
+ - v.retain(|x| *x > 50000)
101
+ + v.retain(|x| *x > size/2)
102
+ })
78
103
}
79
104
80
105
#[bench]
81
106
- #[cfg_attr(miri, ignore)] // isolated Miri does not support benchmarks
82
107
fn bench_pop_front_100(b: &mut test::Bencher) {
83
- let mut deq = VecDeque::<i32>::with_capacity(101);
108
+ - let mut deq = VecDeque::<i32>::with_capacity(101);
109
+ + let size = 100;
110
+ + let mut deq = VecDeque::<i32>::with_capacity(size+1);
111
+ + // We'll mess with private state to pretend like `deq` is filled.
112
+ + // Make sure the buffer is initialized so that we don't read uninit memory.
113
+ + unsafe { deq.ptr().write_bytes(0u8, size+1) };
84
114
115
+ b.iter(|| {
116
+ - deq.head = 100;
117
+ + deq.head = size;
118
+ deq.tail = 0;
119
+ while !deq.is_empty() {
120
+ test::black_box(deq.pop_front());
0 commit comments