svbyte 0.1.1

Fast Stream VByte implementation
Documentation
use std::{io::Cursor, mem::size_of};

use criterion::{criterion_group, criterion_main, BatchSize, Criterion, Throughput};
use rand::{thread_rng, Rng};
use svbyte::EncodeCursor;

fn criterion_benchmark(c: &mut Criterion) {
    let mut rng = thread_rng();
    let mut group = c.benchmark_group("encode");
    let mut input = vec![];
    let size = 1000;
    input.resize(size, 0);
    rng.fill(&mut input[..]);
    group.throughput(Throughput::Bytes((size * size_of::<u32>()) as u64));
    group.bench_function("u32", |b| {
        b.iter_batched(
            || EncodeCursor::new(Cursor::new(vec![])),
            |mut e| {
                e.encode(&input).unwrap();
                e.finish()
            },
            BatchSize::SmallInput,
        )
    });
    group.finish();
}

criterion_group!(benches, criterion_benchmark);
criterion_main!(benches);