Skip to content

Commit 59f5ea6

Browse files
committed
Use a #noinline wrapper from the benchmarks to get consistent results
1 parent 0e96399 commit 59f5ea6

File tree

1 file changed

+19
-4
lines changed

1 file changed

+19
-4
lines changed

benches/bench.rs

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,21 +8,31 @@ use self::test::Bencher;
88

99
#[bench]
1010
fn bench_push(b: &mut Bencher) {
11+
#[inline(never)]
12+
fn push_noinline(vec: &mut SmallVec<[u64; 16]>, x: u64) {
13+
vec.push(x)
14+
}
15+
1116
b.iter(|| {
1217
let mut vec: SmallVec<[u64; 16]> = SmallVec::new();
1318
for x in 0..100 {
14-
vec.push(x);
19+
push_noinline(&mut vec, x);
1520
}
1621
vec
1722
});
1823
}
1924

2025
#[bench]
2126
fn bench_insert(b: &mut Bencher) {
27+
#[inline(never)]
28+
fn insert_noinline(vec: &mut SmallVec<[u64; 16]>, x: u64) {
29+
vec.insert(0, x)
30+
}
31+
2232
b.iter(|| {
2333
let mut vec: SmallVec<[u64; 16]> = SmallVec::new();
2434
for x in 0..100 {
25-
vec.insert(0, x);
35+
insert_noinline(&mut vec, x);
2636
}
2737
vec
2838
});
@@ -39,11 +49,16 @@ fn bench_extend(b: &mut Bencher) {
3949

4050
#[bench]
4151
fn bench_pushpop(b: &mut Bencher) {
52+
#[inline(never)]
53+
fn pushpop_noinline(vec: &mut SmallVec<[u64; 16]>, x: u64) {
54+
vec.push(x);
55+
vec.pop();
56+
}
57+
4258
b.iter(|| {
4359
let mut vec: SmallVec<[u64; 16]> = SmallVec::new();
4460
for x in 0..100 {
45-
vec.push(x);
46-
vec.pop();
61+
pushpop_noinline(&mut vec, x);
4762
}
4863
vec
4964
});

0 commit comments

Comments
 (0)