Avoid expensive setup

This commit is contained in:
Tony Garnock-Jones 2020-06-17 11:01:31 +02:00
parent b1c7fe8c04
commit 24afca5d32
1 changed files with 33 additions and 28 deletions

View File

@ -80,41 +80,46 @@ pub fn bench_ser_encoder(c: &mut Criterion) {
} }
pub fn large_testdata_decoder_with_ann(c: &mut Criterion) { pub fn large_testdata_decoder_with_ann(c: &mut Criterion) {
let mut fh = std::fs::File::open("benches/testdata.bin").unwrap(); c.bench_function("decode testdata.bin with annotations", |b| {
let mut bs = vec![]; let mut fh = std::fs::File::open("benches/testdata.bin").unwrap();
fh.read_to_end(&mut bs).ok(); let mut bs = vec![];
c.bench_function("decode testdata.bin with annotations", |b| b.iter(|| { fh.read_to_end(&mut bs).ok();
let mut r = reader::from_bytes(&bs[..]); b.iter(|| {
while let Some(_) = r.next(true).unwrap() {} let mut r = reader::from_bytes(&bs[..]);
})); while let Some(_) = r.next(true).unwrap() {}
})
});
} }
pub fn large_testdata_decoder_without_ann(c: &mut Criterion) { pub fn large_testdata_decoder_without_ann(c: &mut Criterion) {
let mut fh = std::fs::File::open("benches/testdata.bin").unwrap(); c.bench_function("decode testdata.bin without annotations", |b| {
let mut bs = vec![]; let mut fh = std::fs::File::open("benches/testdata.bin").unwrap();
fh.read_to_end(&mut bs).ok(); let mut bs = vec![];
c.bench_function("decode testdata.bin without annotations", |b| b.iter(|| { fh.read_to_end(&mut bs).ok();
let mut r = reader::from_bytes(&bs[..]); b.iter(|| {
while let Some(_) = r.next(false).unwrap() {} let mut r = reader::from_bytes(&bs[..]);
})); while let Some(_) = r.next(false).unwrap() {}
})
});
} }
pub fn large_testdata_encoder(c: &mut Criterion) { pub fn large_testdata_encoder(c: &mut Criterion) {
let mut fh = std::fs::File::open("benches/testdata.bin").unwrap(); c.bench_function("encode testdata.bin", |b| {
let mut vs = vec![]; let mut fh = BufReader::new(std::fs::File::open("benches/testdata.bin").unwrap());
let mut r = reader::from_read(&mut fh); let mut vs = vec![];
while let Some(v) = r.next(true).unwrap() { let mut r = reader::from_read(&mut fh);
vs.push(v); while let Some(v) = r.next(true).unwrap() {
} vs.push(v);
c.bench_function("encode testdata.bin", |b| b.iter_with_large_drop(|| {
let mut bs = vec![];
let mut e = encoder::Encoder::new(&mut bs);
for v in &vs {
e.write(&v).unwrap();
} }
bs b.iter_with_large_drop(|| {
})); let mut bs = vec![];
let mut e = encoder::Encoder::new(&mut bs);
for v in &vs {
e.write(&v).unwrap();
}
bs
})
});
} }
criterion_group!(codec, criterion_group!(codec,