diff options
author | Valentin Popov <valentin@popov.link> | 2024-01-08 00:21:28 +0300 |
---|---|---|
committer | Valentin Popov <valentin@popov.link> | 2024-01-08 00:21:28 +0300 |
commit | 1b6a04ca5504955c571d1c97504fb45ea0befee4 (patch) | |
tree | 7579f518b23313e8a9748a88ab6173d5e030b227 /vendor/exr/benches/read.rs | |
parent | 5ecd8cf2cba827454317368b68571df0d13d7842 (diff) | |
download | fparkan-1b6a04ca5504955c571d1c97504fb45ea0befee4.tar.xz fparkan-1b6a04ca5504955c571d1c97504fb45ea0befee4.zip |
Initial vendor packages
Signed-off-by: Valentin Popov <valentin@popov.link>
Diffstat (limited to 'vendor/exr/benches/read.rs')
-rw-r--r-- | vendor/exr/benches/read.rs | 172 |
1 files changed, 172 insertions, 0 deletions
diff --git a/vendor/exr/benches/read.rs b/vendor/exr/benches/read.rs new file mode 100644 index 0000000..634f16e --- /dev/null +++ b/vendor/exr/benches/read.rs @@ -0,0 +1,172 @@ +#[macro_use] +extern crate bencher; + +extern crate exr; +use exr::prelude::*; + +use bencher::Bencher; +use std::fs; +use std::io::Cursor; +use exr::image::pixel_vec::PixelVec; + +/// Read uncompressed (always single core) +fn read_single_image_uncompressed_non_parallel_rgba(bench: &mut Bencher) { + let mut file = fs::read("tests/images/valid/custom/crowskull/crow_uncompressed.exr").unwrap(); + bench.iter(||{ + bencher::black_box(&mut file); + + let image = exr::prelude::read() + .no_deep_data().largest_resolution_level() + .rgba_channels(PixelVec::<(f32,f32,f32,f32)>::constructor, PixelVec::set_pixel) + .all_layers().all_attributes() + .non_parallel() + .from_buffered(Cursor::new(file.as_slice())).unwrap(); + + bencher::black_box(image); + }) +} + +/// Read from in-memory in parallel +fn read_single_image_uncompressed_rgba(bench: &mut Bencher) { + let mut file = fs::read("tests/images/valid/custom/crowskull/crow_uncompressed.exr").unwrap(); + + bench.iter(||{ + bencher::black_box(&mut file); + + let image = exr::prelude::read() + .no_deep_data().largest_resolution_level() + .rgba_channels(PixelVec::<(f32,f32,f32,f32)>::constructor, PixelVec::set_pixel) + .all_layers().all_attributes() + .from_buffered(Cursor::new(file.as_slice())).unwrap(); + + bencher::black_box(image); + }) +} + +/// Read with multi-core RLE decompression +fn read_single_image_rle_all_channels(bench: &mut Bencher) { + let mut file = fs::read("tests/images/valid/custom/crowskull/crow_rle.exr").unwrap(); + + bench.iter(||{ + bencher::black_box(&mut file); + + let image = exr::prelude::read() + .no_deep_data() + .largest_resolution_level() + .all_channels() + .all_layers() + .all_attributes() + .from_buffered(Cursor::new(file.as_slice())).unwrap(); + + bencher::black_box(image); + }) +} + +/// Read without multi-core RLE decompression +fn read_single_image_rle_non_parallel_all_channels(bench: &mut Bencher) { + let mut file = fs::read("tests/images/valid/custom/crowskull/crow_rle.exr").unwrap(); + + bench.iter(||{ + bencher::black_box(&mut file); + + // copied from `read_all_flat_layers_from_file` and added `.non_parallel()` + let image = exr::prelude::read() + .no_deep_data() + .largest_resolution_level() + .all_channels() + .all_layers() + .all_attributes() + .non_parallel() + .from_buffered(Cursor::new(file.as_slice())).unwrap(); + + bencher::black_box(image); + }) +} + +/// Read with multi-core RLE decompression +fn read_single_image_rle_rgba(bench: &mut Bencher) { + let mut file = fs::read("tests/images/valid/custom/crowskull/crow_rle.exr").unwrap(); + + bench.iter(||{ + bencher::black_box(&mut file); + + let image = exr::prelude::read() + .no_deep_data() + .largest_resolution_level() + .rgba_channels(PixelVec::<(f32,f32,f32,f32)>::constructor, PixelVec::set_pixel) + .all_layers() + .all_attributes() + .from_buffered(Cursor::new(file.as_slice())).unwrap(); + + bencher::black_box(image); + }) +} + +/// Read without multi-core RLE decompression +fn read_single_image_rle_non_parallel_rgba(bench: &mut Bencher) { + let mut file = fs::read("tests/images/valid/custom/crowskull/crow_rle.exr").unwrap(); + + bench.iter(||{ + bencher::black_box(&mut file); + + // copied from `read_all_flat_layers_from_file` and added `.non_parallel()` + let image = exr::prelude::read() + .no_deep_data() + .largest_resolution_level() + .rgba_channels(PixelVec::<(f32,f32,f32,f32)>::constructor, PixelVec::set_pixel) + .all_layers() + .all_attributes() + .non_parallel() + .from_buffered(Cursor::new(file.as_slice())).unwrap(); + + bencher::black_box(image); + }) +} + +/// Read with multi-core zip decompression +fn read_single_image_zips_rgba(bench: &mut Bencher) { + let mut file = fs::read("tests/images/valid/custom/crowskull/crow_zips.exr").unwrap(); + + bench.iter(||{ + bencher::black_box(&mut file); + + let image = exr::prelude::read() + .no_deep_data().largest_resolution_level() + .rgba_channels(PixelVec::<(f32,f32,f32,f32)>::constructor, PixelVec::set_pixel) + .all_layers().all_attributes() + .from_buffered(Cursor::new(file.as_slice())).unwrap(); + + bencher::black_box(image); + }) +} + +/// Read without multi-core ZIP decompression +fn read_single_image_zips_non_parallel_rgba(bench: &mut Bencher) { + let mut file = fs::read("tests/images/valid/custom/crowskull/crow_zips.exr").unwrap(); + + bench.iter(||{ + bencher::black_box(&mut file); + + let image = exr::prelude::read() + .no_deep_data().largest_resolution_level() + .rgba_channels(PixelVec::<(f32,f32,f32,f32)>::constructor, PixelVec::set_pixel) + .all_layers().all_attributes() + .non_parallel() + .from_buffered(Cursor::new(file.as_slice())).unwrap(); + + bencher::black_box(image); + }) +} + +benchmark_group!(read, + read_single_image_uncompressed_rgba, + read_single_image_uncompressed_non_parallel_rgba, + read_single_image_rle_rgba, + read_single_image_rle_non_parallel_rgba, + read_single_image_rle_all_channels, + read_single_image_rle_non_parallel_all_channels, + read_single_image_zips_rgba, + read_single_image_zips_non_parallel_rgba, +); + +benchmark_main!(read);
\ No newline at end of file |