This PR allows the Brute filter parameters to be configured rather than using fixed constants. It also tweaks the presets to take advantage of these new options: o3: level=1, lines=3 (fractionally worse/faster) o4: level=1, lines=4 (same as before) o5: level=4, lines=4 (fractionally better/slower) o6: level=5, lines=8 (slightly better/slower) The parameters can be explicitly set in both the API and the CLI.
57 lines
1.6 KiB
Rust
57 lines
1.6 KiB
Rust
#![feature(test)]
|
|
|
|
extern crate oxipng;
|
|
extern crate test;
|
|
|
|
use std::path::PathBuf;
|
|
|
|
use oxipng::{internal_tests::*, *};
|
|
use test::Bencher;
|
|
|
|
#[bench]
|
|
fn filters_minsum(b: &mut Bencher) {
|
|
let input = test::black_box(PathBuf::from("tests/files/rgb_8_should_be_rgb_8.png"));
|
|
let png = PngData::new(&input, &Options::default()).unwrap();
|
|
|
|
b.iter(|| png.raw.filter_image(FilterStrategy::MinSum, false));
|
|
}
|
|
|
|
#[bench]
|
|
fn filters_entropy(b: &mut Bencher) {
|
|
let input = test::black_box(PathBuf::from("tests/files/rgb_8_should_be_rgb_8.png"));
|
|
let png = PngData::new(&input, &Options::default()).unwrap();
|
|
|
|
b.iter(|| png.raw.filter_image(FilterStrategy::Entropy, false));
|
|
}
|
|
|
|
#[bench]
|
|
fn filters_bigrams(b: &mut Bencher) {
|
|
let input = test::black_box(PathBuf::from("tests/files/rgb_8_should_be_rgb_8.png"));
|
|
let png = PngData::new(&input, &Options::default()).unwrap();
|
|
|
|
b.iter(|| png.raw.filter_image(FilterStrategy::Bigrams, false));
|
|
}
|
|
|
|
#[bench]
|
|
fn filters_bigent(b: &mut Bencher) {
|
|
let input = test::black_box(PathBuf::from("tests/files/rgb_8_should_be_rgb_8.png"));
|
|
let png = PngData::new(&input, &Options::default()).unwrap();
|
|
|
|
b.iter(|| png.raw.filter_image(FilterStrategy::BigEnt, false));
|
|
}
|
|
|
|
#[bench]
|
|
fn filters_brute(b: &mut Bencher) {
|
|
let input = test::black_box(PathBuf::from("tests/files/rgb_8_should_be_rgb_8.png"));
|
|
let png = PngData::new(&input, &Options::default()).unwrap();
|
|
|
|
b.iter(|| {
|
|
png.raw.filter_image(
|
|
FilterStrategy::Brute {
|
|
num_lines: 4,
|
|
level: 1,
|
|
},
|
|
false,
|
|
)
|
|
});
|
|
}
|