use codediff::diff::diff_code;
use criterion::{Criterion, black_box, criterion_group, criterion_main};
use std::time::Duration;
fn benchmark_diff_code(c: &mut Criterion) {
let test_diffs =
codediff::test::helper::handmade_test_code_pairs().expect("Failed to load test diffs");
let mut group = c.benchmark_group("diff_code");
group.measurement_time(Duration::from_secs(60));
group.warm_up_time(Duration::from_secs(2));
for (test_name, (before, after)) in test_diffs.iter() {
let benchmark_name = test_name
.replace(|c: char| !c.is_ascii_alphanumeric() && c != '_', "_")
.to_lowercase();
group.bench_function(benchmark_name, |b| {
let before = before.clone();
let after = after.clone();
b.iter(|| {
diff_code(black_box(&before), black_box(&after));
});
});
}
group.finish();
}
criterion_group! {
name = benches;
config = Criterion::default().configure_from_args();
targets = benchmark_diff_code
}
criterion_main!(benches);