Initial vendor packages
Signed-off-by: Valentin Popov <valentin@popov.link>
This commit is contained in:
54
vendor/weezl/benches/msb8.rs
vendored
Normal file
54
vendor/weezl/benches/msb8.rs
vendored
Normal file
@ -0,0 +1,54 @@
|
||||
extern crate criterion;
|
||||
extern crate weezl;
|
||||
|
||||
use criterion::{black_box, criterion_group, criterion_main, BenchmarkId, Criterion, Throughput};
|
||||
use std::fs;
|
||||
use weezl::{decode::Decoder, BitOrder, LzwStatus};
|
||||
|
||||
pub fn criterion_benchmark(c: &mut Criterion, file: &str) {
|
||||
let data = fs::read(file).expect("Benchmark input not found");
|
||||
let mut group = c.benchmark_group("msb-8");
|
||||
let id = BenchmarkId::new(file, data.len());
|
||||
let mut outbuf = vec![0; 1 << 26]; // 64MB, what wuff uses..
|
||||
let mut decode_once = |data: &[u8]| {
|
||||
let mut decoder = Decoder::new(BitOrder::Msb, 8);
|
||||
let mut written = 0;
|
||||
let outbuf = outbuf.as_mut_slice();
|
||||
let mut data = data;
|
||||
loop {
|
||||
let result = decoder.decode_bytes(data, &mut outbuf[..]);
|
||||
let done = result.status.expect("Error");
|
||||
data = &data[result.consumed_in..];
|
||||
written += result.consumed_out;
|
||||
black_box(&outbuf[..result.consumed_out]);
|
||||
if let LzwStatus::Done = done {
|
||||
break;
|
||||
}
|
||||
if let LzwStatus::NoProgress = done {
|
||||
panic!("Need to make progress");
|
||||
}
|
||||
}
|
||||
written
|
||||
};
|
||||
group.throughput(Throughput::Bytes(decode_once(&data) as u64));
|
||||
group.bench_with_input(id, &data, |b, data| {
|
||||
b.iter(|| {
|
||||
decode_once(data);
|
||||
})
|
||||
});
|
||||
}
|
||||
|
||||
pub fn bench_toml(c: &mut Criterion) {
|
||||
criterion_benchmark(c, "benches/Cargo-8-msb.lzw");
|
||||
}
|
||||
|
||||
pub fn bench_binary(c: &mut Criterion) {
|
||||
criterion_benchmark(c, "benches/binary-8-msb.lzw");
|
||||
}
|
||||
|
||||
pub fn bench_lib(c: &mut Criterion) {
|
||||
criterion_benchmark(c, "benches/lib-8-msb.lzw");
|
||||
}
|
||||
|
||||
criterion_group!(benches, bench_toml, bench_binary, bench_lib);
|
||||
criterion_main!(benches);
|
Reference in New Issue
Block a user