diff --git a/Cargo.toml b/Cargo.toml index 8630ae5..4e4aafb 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -19,3 +19,11 @@ ndarray = "0.12.1" [profile.release] opt-level = 3 lto = "thin" + +[dev-dependencies] +criterion = "0.3" + +[[bench]] +name = "system" +path = "src/benches/bench.rs" +harness = false diff --git a/src/benches/bench.rs b/src/benches/bench.rs new file mode 100644 index 0000000..93640c9 --- /dev/null +++ b/src/benches/bench.rs @@ -0,0 +1,20 @@ +use criterion::{black_box, criterion_group, criterion_main, Criterion}; +use maxwell::Universe; + +fn simple_system(w: u32, h: u32) -> Universe { + let mut universe = Universe::new(w, h); + universe.init(0.0, 0.0); + for _ in 0..100 { + universe.advance(0.01); + } + universe +} + +fn performance_benchmark(c: &mut Criterion) { + c.bench_function("complete system", |b| { + b.iter(|| simple_system(black_box(25), black_box(30))) + }); +} + +criterion_group!(benches, performance_benchmark); +criterion_main!(benches);