Benchmark large collection of small items
This commit is contained in:
parent
e4e6622074
commit
078e8dd4e8
|
@ -2,9 +2,12 @@
|
||||||
watch:
|
watch:
|
||||||
cargo watch -c -x 'test --all-targets -- --nocapture'
|
cargo watch -c -x 'test --all-targets -- --nocapture'
|
||||||
|
|
||||||
bench:
|
bench: benches/testdata.bin
|
||||||
cargo bench --benches
|
cargo bench --benches
|
||||||
|
|
||||||
|
benches/testdata.bin: benches/testdata.bin.gz
|
||||||
|
gzip -dc $< > $@
|
||||||
|
|
||||||
clippy-watch:
|
clippy-watch:
|
||||||
cargo watch -c -x 'clippy --all-targets'
|
cargo watch -c -x 'clippy --all-targets'
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
testdata.bin
|
|
@ -1,5 +1,5 @@
|
||||||
use criterion::{criterion_group, criterion_main, Criterion};
|
use criterion::{criterion_group, criterion_main, Criterion};
|
||||||
use preserves::value::{self, decoder, encoder};
|
use preserves::value::{self, decoder, encoder, reader, reader::Reader};
|
||||||
use preserves::{de, ser};
|
use preserves::{de, ser};
|
||||||
use std::io::Read;
|
use std::io::Read;
|
||||||
use std::io::BufReader;
|
use std::io::BufReader;
|
||||||
|
@ -79,9 +79,52 @@ pub fn bench_ser_encoder(c: &mut Criterion) {
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn large_testdata_decoder_with_ann(c: &mut Criterion) {
|
||||||
|
let mut fh = std::fs::File::open("benches/testdata.bin").unwrap();
|
||||||
|
let mut bs = vec![];
|
||||||
|
fh.read_to_end(&mut bs).ok();
|
||||||
|
c.bench_function("decode testdata.bin with annotations", |b| b.iter(|| {
|
||||||
|
let mut r = reader::from_bytes(&bs[..]);
|
||||||
|
while let Some(_) = r.next(true).unwrap() {}
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn large_testdata_decoder_without_ann(c: &mut Criterion) {
|
||||||
|
let mut fh = std::fs::File::open("benches/testdata.bin").unwrap();
|
||||||
|
let mut bs = vec![];
|
||||||
|
fh.read_to_end(&mut bs).ok();
|
||||||
|
c.bench_function("decode testdata.bin without annotations", |b| b.iter(|| {
|
||||||
|
let mut r = reader::from_bytes(&bs[..]);
|
||||||
|
while let Some(_) = r.next(false).unwrap() {}
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn large_testdata_encoder(c: &mut Criterion) {
|
||||||
|
let mut fh = std::fs::File::open("benches/testdata.bin").unwrap();
|
||||||
|
let mut vs = vec![];
|
||||||
|
let mut r = reader::from_read(&mut fh);
|
||||||
|
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
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
|
||||||
criterion_group!(codec,
|
criterion_group!(codec,
|
||||||
bench_decoder_bytes, bench_decoder_file, bench_decoder_buffered_file,
|
bench_decoder_bytes, bench_decoder_file, bench_decoder_buffered_file,
|
||||||
bench_encoder);
|
bench_encoder);
|
||||||
criterion_group!(serde, bench_de, bench_ser);
|
criterion_group!(serde, bench_de, bench_ser);
|
||||||
criterion_group!(codec_then_serde, bench_decoder_de, bench_ser_encoder);
|
criterion_group!(codec_then_serde, bench_decoder_de, bench_ser_encoder);
|
||||||
criterion_main!(codec, serde, codec_then_serde);
|
criterion_group!{
|
||||||
|
name = large_testdata;
|
||||||
|
config = Criterion::default().sample_size(10);
|
||||||
|
targets = large_testdata_decoder_with_ann, large_testdata_decoder_without_ann, large_testdata_encoder
|
||||||
|
}
|
||||||
|
criterion_main!(codec, serde, codec_then_serde, large_testdata);
|
||||||
|
|
Binary file not shown.
Loading…
Reference in New Issue