@@ -25,6 +25,9 @@ impl Bencher {
25
25
R : FnMut ( ) -> O ,
26
26
{
27
27
let mut codspeed = self . codspeed . borrow_mut ( ) ;
28
+ for _ in 0 ..codspeed:: codspeed:: WARMUP_RUNS {
29
+ black_box ( routine ( ) ) ;
30
+ }
28
31
codspeed. start_benchmark ( self . uri . as_str ( ) ) ;
29
32
black_box ( routine ( ) ) ;
30
33
codspeed. end_benchmark ( ) ;
@@ -49,6 +52,11 @@ impl Bencher {
49
52
R : FnMut ( I ) -> O ,
50
53
{
51
54
let mut codspeed = self . codspeed . borrow_mut ( ) ;
55
+ for _ in 0 ..codspeed:: codspeed:: WARMUP_RUNS {
56
+ let input = black_box ( setup ( ) ) ;
57
+ let output = routine ( input) ;
58
+ drop ( black_box ( output) ) ;
59
+ }
52
60
let input = black_box ( setup ( ) ) ;
53
61
codspeed. start_benchmark ( self . uri . as_str ( ) ) ;
54
62
let output = routine ( input) ;
@@ -87,8 +95,15 @@ impl Bencher {
87
95
R : FnMut ( & mut I ) -> O ,
88
96
{
89
97
let mut codspeed = self . codspeed . borrow_mut ( ) ;
90
- let mut input = black_box ( setup ( ) ) ;
91
98
99
+ for _ in 0 ..codspeed:: codspeed:: WARMUP_RUNS {
100
+ let mut input = black_box ( setup ( ) ) ;
101
+ let output = routine ( & mut input) ;
102
+ drop ( black_box ( output) ) ;
103
+ drop ( black_box ( input) ) ;
104
+ }
105
+
106
+ let mut input = black_box ( setup ( ) ) ;
92
107
codspeed. start_benchmark ( self . uri . as_str ( ) ) ;
93
108
let output = routine ( & mut input) ;
94
109
codspeed. end_benchmark ( ) ;
@@ -121,6 +136,11 @@ impl<'b, A: AsyncExecutor> AsyncBencher<'b, A> {
121
136
let AsyncBencher { b, runner } = self ;
122
137
runner. block_on ( async {
123
138
let mut codspeed = b. codspeed . borrow_mut ( ) ;
139
+
140
+ for _ in 0 ..codspeed:: codspeed:: WARMUP_RUNS {
141
+ black_box ( routine ( ) . await ) ;
142
+ }
143
+
124
144
codspeed. start_benchmark ( b. uri . as_str ( ) ) ;
125
145
black_box ( routine ( ) . await ) ;
126
146
codspeed. end_benchmark ( ) ;
@@ -180,6 +200,13 @@ impl<'b, A: AsyncExecutor> AsyncBencher<'b, A> {
180
200
let AsyncBencher { b, runner } = self ;
181
201
runner. block_on ( async {
182
202
let mut codspeed = b. codspeed . borrow_mut ( ) ;
203
+
204
+ for _ in 0 ..codspeed:: codspeed:: WARMUP_RUNS {
205
+ let input = black_box ( setup ( ) ) ;
206
+ let output = routine ( input) . await ;
207
+ drop ( black_box ( output) ) ;
208
+ }
209
+
183
210
let input = black_box ( setup ( ) ) ;
184
211
codspeed. start_benchmark ( b. uri . as_str ( ) ) ;
185
212
let output = routine ( input) . await ;
@@ -203,12 +230,18 @@ impl<'b, A: AsyncExecutor> AsyncBencher<'b, A> {
203
230
let AsyncBencher { b, runner } = self ;
204
231
runner. block_on ( async {
205
232
let mut codspeed = b. codspeed . borrow_mut ( ) ;
206
- let mut input = black_box ( setup ( ) ) ;
207
233
234
+ for _ in 0 ..codspeed:: codspeed:: WARMUP_RUNS {
235
+ let mut input = black_box ( setup ( ) ) ;
236
+ let output = routine ( & mut input) . await ;
237
+ drop ( black_box ( output) ) ;
238
+ drop ( black_box ( input) ) ;
239
+ }
240
+
241
+ let mut input = black_box ( setup ( ) ) ;
208
242
codspeed. start_benchmark ( b. uri . as_str ( ) ) ;
209
243
let output = routine ( & mut input) . await ;
210
244
codspeed. end_benchmark ( ) ;
211
-
212
245
drop ( black_box ( output) ) ;
213
246
drop ( black_box ( input) ) ;
214
247
} ) ;
0 commit comments