diff --git a/benches/dithering.rs b/benches/dithering.rs index 28481a8..6cd6235 100644 --- a/benches/dithering.rs +++ b/benches/dithering.rs @@ -1,15 +1,27 @@ -use criterion::{black_box, criterion_group, criterion_main, Criterion}; - -fn fibonacci(n: u64) -> u64 { - match n { - 0 => 1, - 1 => 1, - n => fibonacci(n-1) + fibonacci(n-2), - } -} +use criterion::{black_box, criterion_group, criterion_main, BenchmarkId, Criterion}; +use image::{ImageReader, RgbImage}; +use pi_frame_server::dither::{DitherMethod, DitheredImage, Palette}; fn criterion_benchmark(c: &mut Criterion) { - c.bench_function("fib 20", |b| b.iter(|| fibonacci(black_box(20)))); + let sample_file = "sample_0.tiff"; + let image: RgbImage = ImageReader::open(format!("samples/{sample_file}")) + .expect("file exists") + .decode() + .expect("file is valid") + .into_rgb8(); + + c.bench_with_input(BenchmarkId::new("dither", "sample_0"), &image, |b, i| { + b.iter(|| { + let mut method = DitherMethod::Atkinson.get_ditherer(); + let mut result = DitheredImage::new( + image.width(), + image.height(), + Palette::Default.value().to_vec(), + ); + + method.dither(i, &mut result); + }); + }); } criterion_group!(benches, criterion_benchmark);