Skip to content

Commit 2e79c82

Browse files
Keatsboydgreenfield
authored andcommitted
Use criterion for benchmarks
1 parent 28f385f commit 2e79c82

File tree

2 files changed

+38
-29
lines changed

2 files changed

+38
-29
lines changed

Cargo.toml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
name = "mmap-bitvec"
33
version = "0.3.0"
44
authors = ["Roderick Bovee <roderick@onecodex.com>"]
5+
autobenches = false
56

67
[dependencies]
78
memmap = "0.6.2"
@@ -10,3 +11,10 @@ murmurhash3 = "0.0.5"
1011
[features]
1112
backward_bytes = []
1213
rank_lookup = []
14+
15+
[dev-dependencies]
16+
criterion = "0.3"
17+
18+
[[bench]]
19+
name = "benchmark"
20+
harness = false

benches/benchmark.rs

Lines changed: 30 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
1-
#![feature(test)]
2-
extern crate test;
31
extern crate memmap;
42
extern crate mmap_bitvec;
3+
extern crate criterion;
54

65
use std::fs::OpenOptions;
76
use std::mem::transmute;
@@ -10,6 +9,8 @@ use std::ops::Range;
109
use memmap::{MmapMut, MmapOptions};
1110
use mmap_bitvec::{BitVector, MmapBitVec};
1211

12+
use criterion::{black_box, criterion_group, criterion_main, Criterion};
13+
1314
type BitVecSlice = u64;
1415
const BIT_VEC_SLICE_SIZE: u8 = 64;
1516
const FILENAME: &str = "./bfield.mmap";
@@ -102,8 +103,7 @@ fn get_range(mmap: &MmapMut, size: usize, r: Range<usize>) -> BitVecSlice {
102103
v & (BitVecSlice::max_value() >> (BIT_VEC_SLICE_SIZE - new_size))
103104
}
104105

105-
#[bench]
106-
fn bench_get_range_simplified(bench: &mut test::Bencher) {
106+
fn bench_get_range_simplified() {
107107
let file = OpenOptions::new()
108108
.read(true)
109109
.write(true)
@@ -114,17 +114,14 @@ fn bench_get_range_simplified(bench: &mut test::Bencher) {
114114

115115
let mut r = 0;
116116
let mut i = 1;
117-
bench.iter(|| {
118-
for _ in 0..100000 {
119-
let l = i % (size - 64);
120-
r += get_range_simplified(&mmap, size, l).count_ones();
121-
i = next_random(i);
122-
}
123-
})
117+
for _ in 0..100000 {
118+
let l = i % (size - 64);
119+
r += get_range_simplified(&mmap, size, l).count_ones();
120+
i = next_random(i);
121+
}
124122
}
125123

126-
#[bench]
127-
fn bench_get_range(bench: &mut test::Bencher) {
124+
fn bench_get_range() {
128125
let file = OpenOptions::new()
129126
.read(true)
130127
.write(true)
@@ -135,25 +132,29 @@ fn bench_get_range(bench: &mut test::Bencher) {
135132

136133
let mut r = 0;
137134
let mut i = 1;
138-
bench.iter(|| {
139-
for _ in 0..100000 {
140-
let l = i % (size - 64);
141-
r += get_range(&mmap, size, l..l + 64).count_ones();
142-
i = next_random(i);
143-
}
144-
})
135+
for _ in 0..100000 {
136+
let l = i % (size - 64);
137+
r += get_range(&mmap, size, l..l + 64).count_ones();
138+
i = next_random(i);
139+
}
145140
}
146141

147-
#[bench]
148-
fn bench_get_range_actual(bench: &mut test::Bencher) {
142+
fn bench_get_range_actual() {
149143
let bitvec = MmapBitVec::open_no_header(FILENAME, 0).unwrap();
150144
let mut r = 0;
151145
let mut i = 1;
152-
bench.iter(|| {
153-
for _ in 0..100000 {
154-
let l = i % (bitvec.size() - 64);
155-
r += bitvec.get_range(l..l + 64).count_ones();
156-
i = next_random(i);
157-
}
158-
})
146+
for _ in 0..100000 {
147+
let l = i % (bitvec.size() - 64);
148+
r += bitvec.get_range(l..l + 64).count_ones();
149+
i = next_random(i);
150+
}
159151
}
152+
153+
fn criterion_benchmark(c: &mut Criterion) {
154+
c.bench_function("get_range_actual", |b| b.iter(|| bench_get_range_actual()));
155+
c.bench_function("get_range_simplified", |b| b.iter(|| bench_get_range_simplified()));
156+
c.bench_function("get_range", |b| b.iter(|| bench_get_range()));
157+
}
158+
159+
criterion_group!(benches, criterion_benchmark);
160+
criterion_main!(benches);

0 commit comments

Comments
 (0)