use criterion::{criterion_group, criterion_main, Criterion};
mod common;
fn initial_code_seperation_benchmark(c: &mut Criterion) {
c.bench_function("Initial Separation", |b| {
b.iter(|| hfmn::CodeBook::from_data(common::TEST_STRING).unwrap())
});
}
fn encode_benchmark(c: &mut Criterion) {
let coder = hfmn::CodeBook::from_data(common::TEST_STRING).unwrap();
c.bench_function("Encode", |b| {
b.iter(|| coder.encode_data(common::TEST_STRING))
});
}
fn decode_benchmark(c: &mut Criterion) {
let coder = hfmn::CodeBook::from_data(common::TEST_STRING).unwrap();
let encoded = coder.encode_data(common::TEST_STRING).unwrap();
let (encoded, num_symbols) = hfmn::chain(&encoded);
c.bench_function("Decode", |b| {
b.iter(|| coder.decode_data(&encoded, num_symbols))
});
}
criterion_group!(
benches,
initial_code_seperation_benchmark,
encode_benchmark,
decode_benchmark,
);
criterion_main!(benches);