1 use bencher::{benchmark_group, benchmark_main};
3 use std::io::{Cursor, Write};
6 use zip::{ZipArchive, ZipWriter};
8 const FILE_COUNT: usize = 15_000;
9 const FILE_SIZE: usize = 1024;
11 fn generate_random_archive(count_files: usize, file_size: usize) -> Vec<u8> {
12 let data = Vec::new();
13 let mut writer = ZipWriter::new(Cursor::new(data));
15 zip::write::FileOptions::default().compression_method(zip::CompressionMethod::Stored);
17 let bytes = vec![0u8; file_size];
19 for i in 0..count_files {
20 let name = format!("file_deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef_{i}.dat");
21 writer.start_file(name, options).unwrap();
22 writer.write_all(&bytes).unwrap();
25 writer.finish().unwrap().into_inner()
28 fn read_metadata(bench: &mut Bencher) {
29 let bytes = generate_random_archive(FILE_COUNT, FILE_SIZE);
32 let archive = ZipArchive::new(Cursor::new(bytes.as_slice())).unwrap();
37 benchmark_group!(benches, read_metadata);
38 benchmark_main!(benches);