58 lines
1.9 KiB
Rust
58 lines
1.9 KiB
Rust
//! To run benchmarks, also pass RUSTFLAGS="--cfg bench" until cargo does this automatically.
|
|
|
|
use std::fs::File;
|
|
|
|
use criterion::{black_box, criterion_group, criterion_main, Criterion};
|
|
|
|
use qoi_fast::*;
|
|
|
|
pub fn criterion_benchmark(c: &mut Criterion) {
|
|
// let three_raw = include_bytes!("../assets/three.raw");
|
|
// let four_raw = include_bytes!("../assets/four.raw");
|
|
|
|
// let three_qoi = qoi_encode::<3>(three_raw, 572, 354).unwrap();
|
|
// c.bench_function("encode 3", |b| {
|
|
// b.iter(|| black_box(qoi_encode::<3>(three_raw, 572, 354).unwrap()))
|
|
// });
|
|
// c.bench_function("decode 3", |b| {
|
|
// b.iter(|| black_box(qoi_decode::<3>(&three_qoi).unwrap()))
|
|
// });
|
|
|
|
// c.bench_function("encode 4", |b| {
|
|
// b.iter(|| black_box(qoi_encode::<4>(four_raw, 572, 354).unwrap()))
|
|
// });
|
|
|
|
let decoder = png::Decoder::new(
|
|
File::open("/Users/ivansmirnov/projects/rust/qoi-other/images/kodak/kodim11.png").unwrap(),
|
|
);
|
|
let mut reader = decoder.read_info().unwrap();
|
|
let mut buf = vec![0; reader.output_buffer_size()];
|
|
let info = reader.next_frame(&mut buf).unwrap();
|
|
assert_eq!(info.color_type.samples(), 3);
|
|
let png_bytes = &buf[..info.buffer_size()];
|
|
let qoi_bytes = qoi_encode_to_vec(
|
|
png_bytes,
|
|
info.width as _,
|
|
info.height as _,
|
|
info.color_type.samples() as _,
|
|
)
|
|
.unwrap();
|
|
|
|
c.bench_function("kodim11.png (encode-3)", |b| {
|
|
b.iter(|| {
|
|
black_box(qoi_encode_to_vec(
|
|
png_bytes,
|
|
info.width as _,
|
|
info.height as _,
|
|
info.color_type.samples() as _,
|
|
))
|
|
.unwrap()
|
|
})
|
|
});
|
|
c.bench_function("kodim11.png (decode-3)", |b| {
|
|
b.iter(|| black_box(qoi_decode_to_vec(&qoi_bytes, 3)).unwrap())
|
|
});
|
|
}
|
|
|
|
criterion_group!(benches, criterion_benchmark);
|
|
criterion_main!(benches);
|