use criterion::{BenchmarkId, Criterion, criterion_group, criterion_main};
use deep_causality_cfd::{CfdFlow, Operator};
use std::hint::black_box;
fn bench_operator_ladders(c: &mut Criterion) {
let mut group = c.benchmark_group("operator_study/viscous");
let ladders: [&[usize]; 3] = [&[16, 32], &[16, 32, 64], &[16, 32, 64, 128]];
for ladder in ladders {
let label = format!("{}rungs_to_{}", ladder.len(), ladder.last().unwrap());
group.bench_with_input(BenchmarkId::from_parameter(label), &ladder, |b, &ladder| {
b.iter(|| {
let report = CfdFlow::operator_study::<f64>("bench-operator")
.operator(Operator::Viscous)
.resolutions(ladder.to_vec())
.run()
.expect("operator study runs");
black_box(report);
})
});
}
group.finish();
}
criterion_group!(operator_study_benches, bench_operator_ladders);
criterion_main!(operator_study_benches);