Skip to content

Commit abf82ff

Browse files
committed
Add benchmarks for push, insert, extend, and pushpop
1 parent a48ec67 commit abf82ff

File tree

1 file changed

+43
-0
lines changed

1 file changed

+43
-0
lines changed

lib.rs

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
//! Small vectors in various sizes. These store a certain number of elements inline and fall back
66
//! to the heap for larger allocations.
77
8+
#![feature(test)]
9+
810
use std::borrow::{Borrow, BorrowMut};
911
use std::cmp;
1012
use std::fmt;
@@ -647,8 +649,10 @@ impl_array!(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 20, 24, 32,
647649

648650
#[cfg(test)]
649651
pub mod tests {
652+
extern crate test;
650653
use SmallVec;
651654
use std::borrow::ToOwned;
655+
use self::test::Bencher;
652656

653657
// We heap allocate all these strings so that double frees will show up under valgrind.
654658

@@ -1000,4 +1004,43 @@ pub mod tests {
10001004
assert_eq!(vec.clone().into_iter().len(), 3);
10011005
assert_eq!(vec.drain().len(), 3);
10021006
}
1007+
1008+
#[bench]
1009+
fn bench_push(b: &mut Bencher) {
1010+
b.iter(|| {
1011+
let mut vec: SmallVec<[u64; 16]> = SmallVec::new();
1012+
for x in 0..100 {
1013+
vec.push(x);
1014+
}
1015+
});
1016+
}
1017+
1018+
#[bench]
1019+
fn bench_insert(b: &mut Bencher) {
1020+
b.iter(|| {
1021+
let mut vec: SmallVec<[u64; 16]> = SmallVec::new();
1022+
for x in 0..100 {
1023+
vec.insert(0, x);
1024+
}
1025+
});
1026+
}
1027+
1028+
#[bench]
1029+
fn bench_extend(b: &mut Bencher) {
1030+
b.iter(|| {
1031+
let mut vec: SmallVec<[u64; 16]> = SmallVec::new();
1032+
vec.extend(0..100);
1033+
});
1034+
}
1035+
1036+
#[bench]
1037+
fn bench_pushpop(b: &mut Bencher) {
1038+
b.iter(|| {
1039+
let mut vec: SmallVec<[u64; 16]> = SmallVec::new();
1040+
for x in 0..100 {
1041+
vec.push(x);
1042+
vec.pop();
1043+
}
1044+
});
1045+
}
10031046
}

0 commit comments

Comments
 (0)