summaryrefslogtreecommitdiff
path: root/vendor/exr/benches/read.rs
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/exr/benches/read.rs')
-rw-r--r--vendor/exr/benches/read.rs172
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