Benchmarks for SmallVec · rust-lang/rust@ca52648 (original) (raw)

Original file line number Diff line number Diff line change
@@ -225,3 +225,119 @@ impl Decodable for SmallVec
225 225 })
226 226 }
227 227 }
228 +
229 +#[cfg(test)]
230 +mod tests {
231 +extern crate test;
232 +use self::test::Bencher;
233 +
234 +use super::*;
235 +
236 +#[bench]
237 +fn fill_small_vec_1_10_with_cap(b: &mut Bencher) {
238 + b.iter(|
239 +let mut sv: SmallVec<[usize; 1]> = SmallVec::with_capacity(10);
240 +
241 + sv.extend(0..10);
242 +})
243 +}
244 +
245 +#[bench]
246 +fn fill_small_vec_1_10_wo_cap(b: &mut Bencher) {
247 + b.iter(|
248 +let mut sv: SmallVec<[usize; 1]> = SmallVec::new();
249 +
250 + sv.extend(0..10);
251 +})
252 +}
253 +
254 +#[bench]
255 +fn fill_small_vec_8_10_with_cap(b: &mut Bencher) {
256 + b.iter(|
257 +let mut sv: SmallVec<[usize; 8]> = SmallVec::with_capacity(10);
258 +
259 + sv.extend(0..10);
260 +})
261 +}
262 +
263 +#[bench]
264 +fn fill_small_vec_8_10_wo_cap(b: &mut Bencher) {
265 + b.iter(|
266 +let mut sv: SmallVec<[usize; 8]> = SmallVec::new();
267 +
268 + sv.extend(0..10);
269 +})
270 +}
271 +
272 +#[bench]
273 +fn fill_small_vec_32_10_with_cap(b: &mut Bencher) {
274 + b.iter(|
275 +let mut sv: SmallVec<[usize; 32]> = SmallVec::with_capacity(10);
276 +
277 + sv.extend(0..10);
278 +})
279 +}
280 +
281 +#[bench]
282 +fn fill_small_vec_32_10_wo_cap(b: &mut Bencher) {
283 + b.iter(|
284 +let mut sv: SmallVec<[usize; 32]> = SmallVec::new();
285 +
286 + sv.extend(0..10);
287 +})
288 +}
289 +
290 +#[bench]
291 +fn fill_small_vec_1_50_with_cap(b: &mut Bencher) {
292 + b.iter(|
293 +let mut sv: SmallVec<[usize; 1]> = SmallVec::with_capacity(50);
294 +
295 + sv.extend(0..50);
296 +})
297 +}
298 +
299 +#[bench]
300 +fn fill_small_vec_1_50_wo_cap(b: &mut Bencher) {
301 + b.iter(|
302 +let mut sv: SmallVec<[usize; 1]> = SmallVec::new();
303 +
304 + sv.extend(0..50);
305 +})
306 +}
307 +
308 +#[bench]
309 +fn fill_small_vec_8_50_with_cap(b: &mut Bencher) {
310 + b.iter(|
311 +let mut sv: SmallVec<[usize; 8]> = SmallVec::with_capacity(50);
312 +
313 + sv.extend(0..50);
314 +})
315 +}
316 +
317 +#[bench]
318 +fn fill_small_vec_8_50_wo_cap(b: &mut Bencher) {
319 + b.iter(|
320 +let mut sv: SmallVec<[usize; 8]> = SmallVec::new();
321 +
322 + sv.extend(0..50);
323 +})
324 +}
325 +
326 +#[bench]
327 +fn fill_small_vec_32_50_with_cap(b: &mut Bencher) {
328 + b.iter(|
329 +let mut sv: SmallVec<[usize; 32]> = SmallVec::with_capacity(50);
330 +
331 + sv.extend(0..50);
332 +})
333 +}
334 +
335 +#[bench]
336 +fn fill_small_vec_32_50_wo_cap(b: &mut Bencher) {
337 + b.iter(|
338 +let mut sv: SmallVec<[usize; 32]> = SmallVec::new();
339 +
340 + sv.extend(0..50);
341 +})
342 +}
343 +}