Skip to content

Commit 1714fbd

Browse files
author
bors-servo
authored
Auto merge of #31 - nipunn1313:bench, r=jdm
Add benchmarks for push, insert, extend, and pushpop Want to add these benchmarks so that we can more effectively detect regressions/improvements from PR's like #28 and #29. <!-- Reviewable:start --> --- This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/rust-smallvec/31) <!-- Reviewable:end -->
2 parents 28221f3 + 951f1d0 commit 1714fbd

File tree

3 files changed

+60
-0
lines changed

3 files changed

+60
-0
lines changed

.travis.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,10 @@ rust:
33
- nightly
44
- beta
55
- stable
6+
script: |
7+
cargo build --verbose &&
8+
cargo test --verbose &&
9+
([ $TRAVIS_RUST_VERSION != nightly ] || cargo test --verbose --features benchmarks) &&
10+
([ $TRAVIS_RUST_VERSION != nightly ] || cargo bench --verbose --features benchmarks bench)
611
notifications:
712
webhooks: http://build.servo.org:54856/travis

Cargo.toml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,3 +13,6 @@ documentation = "http://doc.servo.org/smallvec/"
1313
name = "smallvec"
1414
path = "lib.rs"
1515
doctest = false
16+
17+
[features]
18+
benchmarks = []

lib.rs

Lines changed: 52 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+
#![cfg_attr(feature = "benchmarks", feature(test))]
9+
810
use std::borrow::{Borrow, BorrowMut};
911
use std::cmp;
1012
use std::fmt;
@@ -1008,3 +1010,53 @@ pub mod tests {
10081010
assert_eq!(vec.drain().len(), 3);
10091011
}
10101012
}
1013+
1014+
#[cfg(all(feature = "benchmarks", test))]
1015+
mod bench {
1016+
extern crate test;
1017+
use SmallVec;
1018+
use self::test::Bencher;
1019+
1020+
#[bench]
1021+
fn bench_push(b: &mut Bencher) {
1022+
b.iter(|| {
1023+
let mut vec: SmallVec<[u64; 16]> = SmallVec::new();
1024+
for x in 0..100 {
1025+
vec.push(x);
1026+
}
1027+
vec
1028+
});
1029+
}
1030+
1031+
#[bench]
1032+
fn bench_insert(b: &mut Bencher) {
1033+
b.iter(|| {
1034+
let mut vec: SmallVec<[u64; 16]> = SmallVec::new();
1035+
for x in 0..100 {
1036+
vec.insert(0, x);
1037+
}
1038+
vec
1039+
});
1040+
}
1041+
1042+
#[bench]
1043+
fn bench_extend(b: &mut Bencher) {
1044+
b.iter(|| {
1045+
let mut vec: SmallVec<[u64; 16]> = SmallVec::new();
1046+
vec.extend(0..100);
1047+
vec
1048+
});
1049+
}
1050+
1051+
#[bench]
1052+
fn bench_pushpop(b: &mut Bencher) {
1053+
b.iter(|| {
1054+
let mut vec: SmallVec<[u64; 16]> = SmallVec::new();
1055+
for x in 0..100 {
1056+
vec.push(x);
1057+
vec.pop();
1058+
}
1059+
vec
1060+
});
1061+
}
1062+
}

0 commit comments

Comments
 (0)