Skip to content

Commit 3aee5a2

Browse files
committed
Benches: fix pushpop bench, fix insert bench, add remove bench
1 parent 8c9f6c8 commit 3aee5a2

1 file changed

Lines changed: 24 additions & 6 deletions

File tree

benches/bench.rs

Lines changed: 24 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,14 +26,33 @@ fn bench_push(b: &mut Bencher) {
2626
#[bench]
2727
fn bench_insert(b: &mut Bencher) {
2828
#[inline(never)]
29-
fn insert_noinline(vec: &mut SmallVec<[u64; 16]>, x: u64) {
30-
vec.insert(0, x)
29+
fn insert_noinline(vec: &mut SmallVec<[u64; 16]>, p: usize, x: u64) {
30+
vec.insert(p, x)
3131
}
3232

3333
b.iter(|| {
3434
let mut vec: SmallVec<[u64; 16]> = SmallVec::new();
35+
// insert at the end - 1 so we don't benchmark ptr::copy instead
36+
vec.insert(0, 0);
3537
for x in 0..100 {
36-
insert_noinline(&mut vec, x);
38+
insert_noinline(&mut vec, x, x as u64);
39+
}
40+
vec
41+
});
42+
}
43+
44+
#[bench]
45+
fn bench_remove(b: &mut Bencher) {
46+
#[inline(never)]
47+
fn remove_noinline(vec: &mut SmallVec<[u64; 16]>, p: usize) -> u64 {
48+
vec.remove(p)
49+
}
50+
51+
b.iter(|| {
52+
let mut vec: SmallVec<[u64; 16]> = smallvec![0; 101];
53+
// remove 1 element from the end so we don't benchmark ptr::copy instead
54+
for x in (0..100).rev() {
55+
remove_noinline(&mut vec, x);
3756
}
3857
vec
3958
});
@@ -97,11 +116,10 @@ fn bench_insert_from_slice(b: &mut Bencher) {
97116
#[bench]
98117
fn bench_pushpop(b: &mut Bencher) {
99118
#[inline(never)]
100-
fn pushpop_noinline(vec: &mut SmallVec<[u64; 16]>, x: u64) {
119+
fn pushpop_noinline(vec: &mut SmallVec<[u64; 16]>, x: u64) -> Option<u64> {
101120
vec.push(x);
102-
vec.pop();
121+
vec.pop()
103122
}
104-
105123
b.iter(|| {
106124
let mut vec: SmallVec<[u64; 16]> = SmallVec::new();
107125
for x in 0..100 {

0 commit comments

Comments
 (0)