Merge mozilla-central to autoland. a=merge CLOSED TREE
[gecko.git] / third_party / rust / zip / benches / read_metadata.rs
blob95334b1c5a2fc08b2a37e8b8f74863216a7b3aa5
1 use bencher::{benchmark_group, benchmark_main};
3 use std::io::{Cursor, Write};
5 use bencher::Bencher;
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));
14     let options =
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();
23     }
25     writer.finish().unwrap().into_inner()
28 fn read_metadata(bench: &mut Bencher) {
29     let bytes = generate_random_archive(FILE_COUNT, FILE_SIZE);
31     bench.iter(|| {
32         let archive = ZipArchive::new(Cursor::new(bytes.as_slice())).unwrap();
33         archive.len()
34     });
37 benchmark_group!(benches, read_metadata);
38 benchmark_main!(benches);