use rand::Rng;
use criterion::{black_box, criterion_group, criterion_main, Criterion};

fn criterion_benchmark(c: &mut Criterion) {
  bls48581::init();
  let mut bytes = vec![0u8; 65536];
  rand::thread_rng().fill(&mut bytes[..]);
  
  let mut group = c.benchmark_group("commit");
  group.sample_size(10);
  group.bench_function("commit 16", |b| b.iter(|| black_box(bls48581::commit_raw(&bytes, 16))));
  group.bench_function("commit 128", |b| b.iter(|| black_box(bls48581::commit_raw(&bytes, 128))));
  group.bench_function("commit 256", |b| b.iter(|| black_box(bls48581::commit_raw(&bytes, 256))));
  group.bench_function("commit 1024", |b| b.iter(|| black_box(bls48581::commit_raw(&bytes, 1024))));
  group.bench_function("commit 65536", |b| b.iter(|| black_box(bls48581::commit_raw(&bytes, 65536))));
  group.finish();
}

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