From 1b6a04ca5504955c571d1c97504fb45ea0befee4 Mon Sep 17 00:00:00 2001 From: Valentin Popov Date: Mon, 8 Jan 2024 01:21:28 +0400 Subject: Initial vendor packages Signed-off-by: Valentin Popov --- vendor/png/benches/decoder.rs | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 vendor/png/benches/decoder.rs (limited to 'vendor/png/benches/decoder.rs') diff --git a/vendor/png/benches/decoder.rs b/vendor/png/benches/decoder.rs new file mode 100644 index 0000000..a078c9a --- /dev/null +++ b/vendor/png/benches/decoder.rs @@ -0,0 +1,38 @@ +use std::fs; + +use criterion::{criterion_group, criterion_main, Criterion, Throughput}; +use png::Decoder; + +fn load_all(c: &mut Criterion) { + for entry in fs::read_dir("tests/benches/").unwrap().flatten() { + match entry.path().extension() { + Some(st) if st == "png" => {} + _ => continue, + } + + let data = fs::read(entry.path()).unwrap(); + bench_file(c, data, entry.file_name().into_string().unwrap()); + } +} + +criterion_group!(benches, load_all); +criterion_main!(benches); + +fn bench_file(c: &mut Criterion, data: Vec, name: String) { + let mut group = c.benchmark_group("decode"); + group.sample_size(20); + + let decoder = Decoder::new(&*data); + let mut reader = decoder.read_info().unwrap(); + let mut image = vec![0; reader.output_buffer_size()]; + let info = reader.next_frame(&mut image).unwrap(); + + group.throughput(Throughput::Bytes(info.buffer_size() as u64)); + group.bench_with_input(name, &data, |b, data| { + b.iter(|| { + let decoder = Decoder::new(data.as_slice()); + let mut decoder = decoder.read_info().unwrap(); + decoder.next_frame(&mut image).unwrap(); + }) + }); +} -- cgit v1.2.3