use crate::{
bench_decode_generic, bench_encode_generic,
shard_selection::ShardSelection::{Best, Interleaved, Worst},
};
use commonware_coding::ReedSolomon;
use commonware_cryptography::Sha256;
use criterion::{Criterion, criterion_group};
fn bench_encode(c: &mut Criterion) {
bench_encode_generic::<ReedSolomon<Sha256>>("reed_solomon::encode", c);
}
fn bench_decode(c: &mut Criterion) {
let cases = [
(1 << 12, 20, 1, Interleaved),
(1 << 20, 20, 1, Interleaved),
(1 << 20, 20, 4, Interleaved),
(1 << 23, 20, 1, Interleaved),
(1 << 23, 20, 4, Interleaved),
(1 << 20, 100, 4, Interleaved),
(1 << 20, 250, 4, Interleaved),
(1 << 20, 500, 4, Interleaved),
(1 << 20, 20, 4, Best),
(1 << 20, 20, 4, Worst),
];
bench_decode_generic::<ReedSolomon<Sha256>>("reed_solomon::decode", c, &cases);
}
criterion_group! {
name = benches;
config = Criterion::default().sample_size(10);
targets = bench_encode, bench_decode
}