hfmn 0.1.0

A flexible Huffman coding implementation
Documentation
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);