rbenchmark/benchmark/cpu/
decompression.rs

1use crate::benchmark::Benchmark;
2use rand::prelude::*;
3use std::io::Cursor;
4
5#[derive(Debug)]
6pub struct BenchmarkDecompression {
7    buffer_for_decompession: Vec<u8>,
8}
9
10impl Default for BenchmarkDecompression {
11    fn default() -> Self {
12        let size_byte_for_decompession = byte_unit::n_mb_bytes!(1);
13        let mut rng = rand::thread_rng();
14        let mut buffer_for_compession = vec![0u8; size_byte_for_decompession as usize];
15        buffer_for_compession.shuffle(&mut rng);
16
17        let mut buffer_for_decompession = vec![];
18        lzma_rs::lzma_compress(
19            &mut Cursor::new(buffer_for_compession),
20            &mut buffer_for_decompession,
21        )
22        .unwrap();
23
24        Self {
25            buffer_for_decompession,
26        }
27    }
28}
29
30impl Benchmark for BenchmarkDecompression {
31    fn run_iter(&self) -> anyhow::Result<()> {
32        let mut output = vec![];
33        lzma_rs::lzma_decompress(&mut Cursor::new(&self.buffer_for_decompession), &mut output)?;
34
35        Ok(())
36    }
37
38    fn name(&self) -> &'static str {
39        "decompression"
40    }
41}
42
43#[cfg(test)]
44mod tests {
45    use super::*;
46
47    #[test]
48    fn run_iter() {
49        let bench = BenchmarkDecompression::default();
50        bench.run_iter().unwrap();
51    }
52}