aboutsummaryrefslogtreecommitdiff
path: root/vendor/exr/benches/write.rs
blob: 14331c5343df98f2895cabb7ad8c3eecf7e947d1 (plain) (blame)
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);