use fm_index::suffix_array::NullSampler;
use fm_index::{FMIndex, RLFMIndex};
use criterion::{criterion_group, criterion_main};
use criterion::{AxisScale, BatchSize, BenchmarkId, Criterion, PlotConfiguration};
mod common;
pub fn bench(c: &mut Criterion) {
let plot_config = PlotConfiguration::default().summary_scale(AxisScale::Logarithmic);
let mut group = c.benchmark_group("construction");
group.plot_config(plot_config);
for n in [1000usize, 10_000usize, 100_000usize, 1_000_000].iter() {
group.bench_with_input(BenchmarkId::new("FMIndex", n), n, |b, &n| {
b.iter_batched(
|| common::binary_text_set(n, 0.5),
|(text, converter)| {
FMIndex::new(text, converter, NullSampler::new());
},
BatchSize::SmallInput,
)
});
group.bench_with_input(BenchmarkId::new("RLFMIndex", n), n, |b, &n| {
b.iter_batched(
|| common::binary_text_set(n, 0.5),
|(text, converter)| {
RLFMIndex::new(text, converter, NullSampler::new());
},
BatchSize::SmallInput,
)
});
}
}
criterion_group!(benches, bench);
criterion_main!(benches);