80 lines
2.5 KiB
Rust
80 lines
2.5 KiB
Rust
|
#[macro_use]
|
||
|
extern crate bencher;
|
||
|
|
||
|
extern crate exr;
|
||
|
use exr::prelude::*;
|
||
|
|
||
|
use bencher::Bencher;
|
||
|
use std::io::Cursor;
|
||
|
|
||
|
fn write_parallel_any_channels_to_buffered(bench: &mut Bencher) {
|
||
|
let path = "tests/images/valid/custom/crowskull/crow_rle.exr";
|
||
|
let image = read_all_flat_layers_from_file(path).unwrap();
|
||
|
|
||
|
bench.iter(||{
|
||
|
let mut result = Vec::new();
|
||
|
image.write().to_buffered(Cursor::new(&mut result)).unwrap();
|
||
|
bencher::black_box(result);
|
||
|
})
|
||
|
}
|
||
|
|
||
|
fn write_parallel_zip1_to_buffered(bench: &mut Bencher) {
|
||
|
let path = "tests/images/valid/custom/crowskull/crow_rle.exr";
|
||
|
|
||
|
let mut image = read_first_flat_layer_from_file(path).unwrap();
|
||
|
image.layer_data.encoding.compression = Compression::ZIP1;
|
||
|
|
||
|
bench.iter(||{
|
||
|
let mut result = Vec::new();
|
||
|
image.write().to_buffered(Cursor::new(&mut result)).unwrap();
|
||
|
bencher::black_box(result);
|
||
|
})
|
||
|
}
|
||
|
|
||
|
fn write_nonparallel_zip1_to_buffered(bench: &mut Bencher) {
|
||
|
let path = "tests/images/valid/custom/crowskull/crow_rle.exr";
|
||
|
|
||
|
let mut image = read_first_flat_layer_from_file(path).unwrap();
|
||
|
image.layer_data.encoding.compression = Compression::ZIP1;
|
||
|
|
||
|
bench.iter(||{
|
||
|
let mut result = Vec::new();
|
||
|
image.write().non_parallel().to_buffered(Cursor::new(&mut result)).unwrap();
|
||
|
bencher::black_box(result);
|
||
|
})
|
||
|
}
|
||
|
|
||
|
fn write_parallel_zip16_to_buffered(bench: &mut Bencher) {
|
||
|
let path = "tests/images/valid/custom/crowskull/crow_rle.exr";
|
||
|
|
||
|
let mut image = read_first_flat_layer_from_file(path).unwrap();
|
||
|
image.layer_data.encoding.compression = Compression::ZIP16;
|
||
|
|
||
|
bench.iter(||{
|
||
|
let mut result = Vec::new();
|
||
|
image.write().to_buffered(Cursor::new(&mut result)).unwrap();
|
||
|
bencher::black_box(result);
|
||
|
})
|
||
|
}
|
||
|
|
||
|
fn write_uncompressed_to_buffered(bench: &mut Bencher) {
|
||
|
let path = "tests/images/valid/custom/crowskull/crow_uncompressed.exr";
|
||
|
let image = read_all_flat_layers_from_file(path).unwrap();
|
||
|
assert!(image.layer_data.iter().all(|layer| layer.encoding.compression == Compression::Uncompressed));
|
||
|
|
||
|
bench.iter(||{
|
||
|
let mut result = Vec::new();
|
||
|
image.write().to_buffered(Cursor::new(&mut result)).unwrap();
|
||
|
bencher::black_box(result);
|
||
|
})
|
||
|
}
|
||
|
|
||
|
benchmark_group!(write,
|
||
|
write_parallel_any_channels_to_buffered,
|
||
|
write_nonparallel_zip1_to_buffered,
|
||
|
write_parallel_zip1_to_buffered,
|
||
|
write_parallel_zip16_to_buffered,
|
||
|
write_uncompressed_to_buffered
|
||
|
);
|
||
|
|
||
|
benchmark_main!(write);
|