use criterion::{criterion_group, BatchSize, Criterion, Throughput}; use std::time::Duration; const SIZE: usize = 1024 * 1024; fn large_setup(c: &mut Criterion) { let mut group = c.benchmark_group("iter_with_large_setup"); group.throughput(Throughput::Bytes(SIZE as u64)); group.bench_function("large_setup", |b| { b.iter_batched( || (0..SIZE).map(|i| i as u8).collect::>(), |v| v, BatchSize::NumBatches(1), ) }); } fn small_setup(c: &mut Criterion) { let mut group = c.benchmark_group("iter_with_large_setup"); group.bench_function("small_setup", |b| { b.iter_batched(|| SIZE, |size| size, BatchSize::NumBatches(1)) }); } fn short_warmup() -> Criterion { Criterion::default().warm_up_time(Duration::new(1, 0)) } criterion_group! { name = benches; config = short_warmup(); targets = large_setup, small_setup }