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