rbenchmark/benchmark/cpu/
decompression.rs1use 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}