diff --git a/Cargo.toml b/Cargo.toml index 0c20d2f..469fe84 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -22,3 +22,10 @@ thiserror = "^1.0" byteorder = "1" bytes = "0.5" num-rational = "0.3" + +[dev-dependencies] +criterion = "0.3" + +[[bench]] +name = "bench_main" +harness = false \ No newline at end of file diff --git a/README.md b/README.md index 3baaad9..075ee92 100644 --- a/README.md +++ b/README.md @@ -81,6 +81,14 @@ With print statement output. cargo test -- --nocapture ``` +#### Run Benchmark Tests +``` +cargo bench +``` + +View HTML report at `target/criterion/report/index.html` + + ## Resources Thanks to the following resources used when learning Rust: * https://github.com/mozilla/mp4parse-rust diff --git a/benches/bench_main.rs b/benches/bench_main.rs new file mode 100644 index 0000000..1bc41c5 --- /dev/null +++ b/benches/bench_main.rs @@ -0,0 +1,22 @@ +use criterion::BenchmarkId; +use criterion::{criterion_group, criterion_main, Criterion}; +use mp4; +use std::fs::File; + +fn read_mp4(filename: &str) -> u64 { + let f = File::open(filename).unwrap(); + let m = mp4::read_mp4(f).unwrap(); + let size = m.size(); + size +} + +fn criterion_benchmark(c: &mut Criterion) { + let filename = "tests/samples/minimal.mp4"; + + c.bench_with_input(BenchmarkId::new("input_example", filename), &filename, |b, &s| { + b.iter(|| read_mp4(s)); + }); +} + +criterion_group!(benches, criterion_benchmark); +criterion_main!(benches); \ No newline at end of file diff --git a/examples/simple.rs b/examples/simple.rs index 783150a..c676679 100644 --- a/examples/simple.rs +++ b/examples/simple.rs @@ -6,7 +6,7 @@ fn main() { let args: Vec = env::args().collect(); if args.len() < 2 { - println!("Usage: mp4dump "); + println!("Usage: simple "); std::process::exit(1); }