use criterion::{criterion_group, criterion_main, Criterion}; use sourcenav::{get_quad_tree, read_areas}; use std::fs::read; use std::hint::black_box; use std::io::Cursor; fn bench_badwater_areas(c: &mut Criterion) { let file = read("data/pl_badwater.nav").unwrap(); c.bench_function("badwater areas", |b| { b.iter(|| { let _ = black_box(read_areas(black_box(&mut Cursor::new(&file)))); }) }); } fn bench_badwater_quads(c: &mut Criterion) { let file = read("data/pl_badwater.nav").unwrap(); c.bench_function("badwater areas", |b| { b.iter(|| { let _ = black_box(get_quad_tree(black_box(&mut Cursor::new(&file)))); }) }); } fn bench_tree_query(c: &mut Criterion) { let file = read("data/pl_badwater.nav").unwrap(); let tree = get_quad_tree(&mut Cursor::new(&file)).unwrap(); c.bench_function("badwater areas", |b| { b.iter(|| { let _ = black_box(tree.find_best_height( black_box(320.0), black_box(-1030.0), black_box(0.0), )); }) }); } criterion_group!( benches, bench_badwater_areas, bench_badwater_quads, bench_tree_query ); criterion_main!(benches);