diff options
author | Omer Ben-Amram <omerbenamram@gmail.com> | 2019-05-31 15:39:44 +0300 |
---|---|---|
committer | Omer Ben-Amram <omerbenamram@gmail.com> | 2019-05-31 15:39:44 +0300 |
commit | a41cc02014c9c931de36bfbf00810be82eaa2b6a (patch) | |
tree | 1332029618b4f7caab3291a824c5c48b1e69561d | |
parent | 96b0498140c9da73ae9649bba458115f72873905 (diff) |
change benchmark
-rw-r--r-- | src/benches/benchmark.rs | 25 |
1 files changed, 14 insertions, 11 deletions
diff --git a/src/benches/benchmark.rs b/src/benches/benchmark.rs index 2ce0e08..79695f0 100644 --- a/src/benches/benchmark.rs +++ b/src/benches/benchmark.rs @@ -3,7 +3,7 @@ extern crate criterion; extern crate mft; use criterion::Criterion; -use mft::{MftEntry, MftParser}; +use mft::{MftEntry, MftParser, ReadSeek}; fn process_1000_mft_records(sample: &[u8]) { let mut parser = MftParser::from_buffer(sample.to_vec()).unwrap(); @@ -16,15 +16,8 @@ fn process_1000_mft_records(sample: &[u8]) { } } -fn get_full_path(sample: &[u8]) { - let mut parser = MftParser::from_buffer(sample.to_vec()).unwrap(); - - let mut paths = Vec::with_capacity(100); - let entries: Vec<MftEntry> = parser - .iter_entries() - .take(100) - .filter_map(Result::ok) - .collect(); +fn get_full_path(parser: &mut MftParser<impl ReadSeek>, entries: &[MftEntry]) { + let mut paths = Vec::with_capacity(10000); for entry in entries { paths.push(parser.get_full_path_for_entry(&entry)); @@ -39,7 +32,17 @@ fn criterion_benchmark(c: &mut Criterion) { b.iter(|| process_1000_mft_records(sample)) }); - c.bench_function("get_full_path", move |b| b.iter(|| get_full_path(sample))); + c.bench_function("get_full_path", move |b| { + let mut parser = MftParser::from_buffer(sample.to_vec()).unwrap(); + + let entries: Vec<MftEntry> = parser + .iter_entries() + .take(10000) + .filter_map(Result::ok) + .collect(); + + b.iter(|| get_full_path(&mut parser, &entries)) + }); } criterion_group!(benches, criterion_benchmark); |