Use a #noinline wrapper from the benchmarks to get consistent results

This commit is contained in:
Nipunn Koorapati
2016-09-12 00:48:00 -07:00
parent 0e963993b7
commit 59f5ea6057
+19 -4
View File
@@ -8,10 +8,15 @@ use self::test::Bencher;
#[bench]
fn bench_push(b: &mut Bencher) {
#[inline(never)]
fn push_noinline(vec: &mut SmallVec<[u64; 16]>, x: u64) {
vec.push(x)
}
b.iter(|| {
let mut vec: SmallVec<[u64; 16]> = SmallVec::new();
for x in 0..100 {
vec.push(x);
push_noinline(&mut vec, x);
}
vec
});
@@ -19,10 +24,15 @@ fn bench_push(b: &mut Bencher) {
#[bench]
fn bench_insert(b: &mut Bencher) {
#[inline(never)]
fn insert_noinline(vec: &mut SmallVec<[u64; 16]>, x: u64) {
vec.insert(0, x)
}
b.iter(|| {
let mut vec: SmallVec<[u64; 16]> = SmallVec::new();
for x in 0..100 {
vec.insert(0, x);
insert_noinline(&mut vec, x);
}
vec
});
@@ -39,11 +49,16 @@ fn bench_extend(b: &mut Bencher) {
#[bench]
fn bench_pushpop(b: &mut Bencher) {
#[inline(never)]
fn pushpop_noinline(vec: &mut SmallVec<[u64; 16]>, x: u64) {
vec.push(x);
vec.pop();
}
b.iter(|| {
let mut vec: SmallVec<[u64; 16]> = SmallVec::new();
for x in 0..100 {
vec.push(x);
vec.pop();
pushpop_noinline(&mut vec, x);
}
vec
});