Skip to content

Commit f79f57e

Browse files
authored
Merge pull request #122 from lovasoa/benchmarks
Add three benchmarks to the crate
2 parents 565a131 + 916d4cf commit f79f57e

File tree

6 files changed

+44
-2
lines changed

6 files changed

+44
-2
lines changed

.travis.yml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,7 @@ env:
1212
- FEATURES="rayon"
1313
script:
1414
- cargo build --verbose --no-default-features --features "$FEATURES"
15-
- cargo test --verbose --no-default-features --features "$FEATURES"
15+
- cargo test --tests --benches --no-default-features --features "$FEATURES"
16+
- cargo bench --bench decoding_benchmark --no-default-features --features "$FEATURES" -- --warm-up-time 1 --measurement-time 1 --sample-size 25
17+
18+
cache: cargo

Cargo.toml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,11 @@ rayon = { version = "1.0", optional = true }
1717
[dev-dependencies]
1818
png = "0.14"
1919
walkdir = "2.0"
20+
criterion = "0.3"
21+
22+
[[bench]]
23+
name = "decoding_benchmark"
24+
harness = false
2025

2126
[features]
2227
default = ["rayon"]

appveyor.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,4 +16,5 @@ build: false
1616

1717
test_script:
1818
- cargo build --verbose
19-
- cargo test --verbose
19+
- cargo test --tests --benches
20+
- cargo bench --bench decoding_benchmark --no-default-features --features "$FEATURES" -- --warm-up-time 1 --measurement-time 1 --sample-size 25

benches/decoding_benchmark.rs

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
extern crate criterion;
2+
extern crate jpeg_decoder;
3+
4+
use criterion::{black_box, Criterion};
5+
6+
use jpeg_decoder as jpeg;
7+
use jpeg_decoder::ImageInfo;
8+
9+
fn read_image(image: &[u8]) -> Vec<u8> {
10+
jpeg::Decoder::new(black_box(image)).decode().unwrap()
11+
}
12+
13+
fn read_metadata(image: &[u8]) -> ImageInfo {
14+
let mut decoder = jpeg::Decoder::new(black_box(image));
15+
decoder.read_info().unwrap();
16+
decoder.info().unwrap()
17+
}
18+
19+
fn main() {
20+
let mut c = Criterion::default().configure_from_args();
21+
c.bench_function("decode a 512x512 JPEG", |b| b.iter(|| {
22+
read_image(include_bytes!("tower.jpg"))
23+
}));
24+
25+
c.bench_function("decode a 512x512 progressive JPEG", |b| b.iter(|| {
26+
read_image(include_bytes!("tower_progressive.jpg"))
27+
}));
28+
29+
c.bench_function("extract metadata from an image", |b| b.iter(|| {
30+
read_metadata(include_bytes!("tower.jpg"))
31+
}));
32+
c.final_summary();
33+
}

benches/tower.jpg

69 KB
Loading

benches/tower_progressive.jpg

66.6 KB
Loading

0 commit comments

Comments
 (0)