Skip to content

Commit 291eb90

Browse files
committed
Add benchmarks for Vec to compare to SmallVec
1 parent 8c9f6c8 commit 291eb90

File tree

1 file changed

+96
-0
lines changed

1 file changed

+96
-0
lines changed

benches/bench.rs

Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,3 +130,99 @@ fn bench_macro_from_list(b: &mut Bencher) {
130130
vec
131131
});
132132
}
133+
#[bench]
134+
fn bench_push_vec(b: &mut Bencher) {
135+
#[inline(never)]
136+
fn push_noinline(vec: &mut Vec<u64>, x: u64) {
137+
vec.push(x)
138+
}
139+
140+
b.iter(|| {
141+
let mut vec: Vec<u64> = Vec::with_capacity(16);
142+
for x in 0..100 {
143+
push_noinline(&mut vec, x);
144+
}
145+
vec
146+
});
147+
}
148+
149+
#[bench]
150+
fn bench_insert_vec(b: &mut Bencher) {
151+
#[inline(never)]
152+
fn insert_noinline(vec: &mut Vec<u64>, x: u64) {
153+
vec.insert(0, x)
154+
}
155+
156+
b.iter(|| {
157+
let mut vec: Vec<u64> = Vec::with_capacity(16);
158+
for x in 0..100 {
159+
insert_noinline(&mut vec, x);
160+
}
161+
vec
162+
});
163+
}
164+
165+
#[bench]
166+
fn bench_extend_vec(b: &mut Bencher) {
167+
b.iter(|| {
168+
let mut vec: Vec<u64> = Vec::with_capacity(16);
169+
vec.extend(0..100);
170+
vec
171+
});
172+
}
173+
174+
#[bench]
175+
fn bench_from_slice_vec(b: &mut Bencher) {
176+
let v: Vec<u64> = (0..100).collect();
177+
b.iter(|| {
178+
let vec: Vec<u64> = Vec::from(&v[..]);
179+
vec
180+
});
181+
}
182+
183+
#[bench]
184+
fn bench_extend_from_slice_vec(b: &mut Bencher) {
185+
let v: Vec<u64> = (0..100).collect();
186+
b.iter(|| {
187+
let mut vec: Vec<u64> = Vec::with_capacity(16);
188+
vec.extend_from_slice(&v);
189+
vec
190+
});
191+
}
192+
193+
#[bench]
194+
fn bench_pushpop_vec(b: &mut Bencher) {
195+
#[inline(never)]
196+
fn pushpop_noinline(vec: &mut Vec<u64>, x: u64) {
197+
vec.push(x);
198+
vec.pop();
199+
}
200+
201+
b.iter(|| {
202+
let mut vec: Vec<u64> = Vec::with_capacity(16);
203+
for x in 0..100 {
204+
pushpop_noinline(&mut vec, x);
205+
}
206+
vec
207+
});
208+
}
209+
210+
#[bench]
211+
fn bench_macro_from_elem_vec(b: &mut Bencher) {
212+
b.iter(|| {
213+
let vec: Vec<u64> = vec![42; 100];
214+
vec
215+
});
216+
}
217+
218+
#[bench]
219+
fn bench_macro_from_list_vec(b: &mut Bencher) {
220+
b.iter(|| {
221+
let vec: Vec<u64> = vec![
222+
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 20, 24, 32, 36, 0x40, 0x80,
223+
0x100, 0x200, 0x400, 0x800, 0x1000, 0x2000, 0x4000, 0x8000, 0x10000, 0x20000, 0x40000,
224+
0x80000, 0x100000
225+
];
226+
vec
227+
});
228+
}

0 commit comments

Comments
 (0)