1 use bencher
::{benchmark_group, benchmark_main}
;
3 use std
::io
::{Cursor, Read, Write}
;
6 use getrandom
::getrandom
;
7 use zip
::{ZipArchive, ZipWriter}
;
9 fn generate_random_archive(size
: usize) -> Vec
<u8> {
10 let data
= Vec
::new();
11 let mut writer
= ZipWriter
::new(Cursor
::new(data
));
13 zip
::write
::FileOptions
::default().compression_method(zip
::CompressionMethod
::Stored
);
15 writer
.start_file("random.dat", options
).unwrap();
16 let mut bytes
= vec
![0u8; size
];
17 getrandom(&mut bytes
).unwrap();
18 writer
.write_all(&bytes
).unwrap();
20 writer
.finish().unwrap().into_inner()
23 fn read_entry(bench
: &mut Bencher
) {
24 let size
= 1024 * 1024;
25 let bytes
= generate_random_archive(size
);
26 let mut archive
= ZipArchive
::new(Cursor
::new(bytes
.as_slice())).unwrap();
29 let mut file
= archive
.by_name("random.dat").unwrap();
30 let mut buf
= [0u8; 1024];
32 let n
= file
.read(&mut buf
).unwrap();
39 bench
.bytes
= size
as u64;
42 benchmark_group
!(benches
, read_entry
);
43 benchmark_main
!(benches
);