1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
|
#[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);
|