diff --git a/benches/bench.rs b/benches/bench.rs index 1de96db..8acb3c9 100644 --- a/benches/bench.rs +++ b/benches/bench.rs @@ -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 });