use criterion::{black_box, criterion_group, criterion_main, BenchmarkId, Criterion}; use rand::Rng; static ITERS: u32 = 10_000; fn compare_crates(c: &mut Criterion) { let mut rng = rand::thread_rng(); let mut group = c.benchmark_group("Comparison"); for redundancy in [1, 5, 10, 20, 40] { let samples: Vec = (0..ITERS) .map(|_| rng.gen_range(0..ITERS / redundancy)) .collect(); group.bench_with_input( BenchmarkId::new("median_accumulator", redundancy), &samples, |b, _i| { b.iter(|| { let mut median = median_accumulator::vec::MedianAcc::new(); samples.iter().for_each(|s| median.push(*s)); black_box(median.get_median()); }) }, ); group.bench_with_input( BenchmarkId::new("medianheap", redundancy), &samples, |b, _i| { b.iter(|| { let mut median = medianheap::MedianHeap::new(); samples.iter().for_each(|s| median.push(*s)); black_box(median.median()); }) }, ); } group.finish(); } criterion_group!(benches, compare_crates); criterion_main!(benches);