Skip to content

Commit 2a619fe

Browse files
committed
Add a benchmark covering Reader.next_frame_info.
1 parent a31e67a commit 2a619fe

File tree

2 files changed

+52
-4
lines changed

2 files changed

+52
-4
lines changed

Cargo.toml

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -48,13 +48,18 @@ name = "decoder"
4848
harness = false
4949

5050
[[bench]]
51-
path = "benches/unfilter.rs"
52-
name = "unfilter"
51+
path = "benches/expand_paletted.rs"
52+
name = "expand_paletted"
5353
harness = false
5454
required-features = ["benchmarks"]
5555

5656
[[bench]]
57-
path = "benches/expand_paletted.rs"
58-
name = "expand_paletted"
57+
path = "benches/next_frame_info.rs"
58+
name = "next_frame_info"
59+
harness = false
60+
61+
[[bench]]
62+
path = "benches/unfilter.rs"
63+
name = "unfilter"
5964
harness = false
6065
required-features = ["benchmarks"]

benches/next_frame_info.rs

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
use std::fs;
2+
use std::path::Path;
3+
4+
use criterion::{
5+
criterion_group, criterion_main, measurement::WallTime, BenchmarkGroup, Criterion,
6+
};
7+
use png::Decoder;
8+
9+
criterion_group! {benches, load_all}
10+
criterion_main!(benches);
11+
12+
fn load_all(c: &mut Criterion) {
13+
let mut g = c.benchmark_group("next_frame_info");
14+
bench_file(&mut g, Path::new("tests/animated/basic_f20.png"), 18, 35);
15+
}
16+
17+
fn bench_file(
18+
g: &mut BenchmarkGroup<WallTime>,
19+
png_path: &Path,
20+
number_of_frames_to_skip: usize,
21+
expected_fctl_sequence_number: u32,
22+
) {
23+
let data = fs::read(png_path).unwrap();
24+
let name = format!("{}: {} skips", png_path.display(), number_of_frames_to_skip);
25+
g.bench_with_input(&name, data.as_slice(), |b, data| {
26+
b.iter(|| {
27+
let decoder = Decoder::new(data);
28+
let mut reader = decoder.read_info().unwrap();
29+
for _ in 0..number_of_frames_to_skip {
30+
reader.next_frame_info().unwrap();
31+
}
32+
assert_eq!(
33+
reader
34+
.info()
35+
.frame_control
36+
.as_ref()
37+
.unwrap()
38+
.sequence_number,
39+
expected_fctl_sequence_number,
40+
);
41+
})
42+
});
43+
}

0 commit comments

Comments
 (0)