use criterion::{criterion_group, criterion_main, BenchmarkId, Criterion};
use std::hint::black_box;
fn bench_grid_overhead(c: &mut Criterion) {
use dotmax::{quick, BrailleGrid};
let mut group = c.benchmark_group("quick_overhead");
group.bench_function("BrailleGrid::new_80x24", |b| {
b.iter(|| black_box(BrailleGrid::new(80, 24).unwrap()));
});
group.bench_function("quick::grid", |b| {
b.iter(|| black_box(quick::grid().unwrap()));
});
group.bench_function("quick::grid_sized_80x24", |b| {
b.iter(|| black_box(quick::grid_sized(80, 24).unwrap()));
});
group.finish();
}
#[cfg(feature = "image")]
mod image_benchmarks {
use super::*;
use dotmax::image::ImageRenderer;
use dotmax::quick;
use std::path::Path;
pub fn bench_load_image_overhead(c: &mut Criterion) {
let mut group = c.benchmark_group("quick_image_overhead");
let test_image = Path::new("tests/fixtures/images/sample.png");
if !test_image.exists() {
println!("Skipping image benchmarks: test image not found");
return;
}
group.bench_function("manual_ImageRenderer_80x24", |b| {
b.iter(|| {
black_box(
ImageRenderer::new()
.load_from_path(test_image)
.unwrap()
.resize(80, 24, true)
.unwrap()
.render()
.unwrap(),
)
});
});
group.bench_function("quick::load_image_sized_80x24", |b| {
b.iter(|| black_box(quick::load_image_sized(test_image, 80, 24).unwrap()));
});
group.bench_function("quick::load_image_auto", |b| {
b.iter(|| black_box(quick::load_image(test_image).unwrap()));
});
group.finish();
}
}
criterion_group!(quick_benches, bench_grid_overhead);
#[cfg(feature = "image")]
criterion_group!(quick_image_benches, image_benchmarks::bench_load_image_overhead);
#[cfg(feature = "image")]
criterion_main!(quick_benches, quick_image_benches);
#[cfg(not(feature = "image"))]
criterion_main!(quick_benches);