• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 use criterion::{criterion_group, BatchSize, Criterion, Throughput};
2 use std::time::Duration;
3 
4 const SIZE: usize = 1024 * 1024;
5 
large_setup(c: &mut Criterion)6 fn large_setup(c: &mut Criterion) {
7     let mut group = c.benchmark_group("iter_with_large_setup");
8     group.throughput(Throughput::Bytes(SIZE as u64));
9     group.bench_function("large_setup", |b| {
10         b.iter_batched(
11             || (0..SIZE).map(|i| i as u8).collect::<Vec<_>>(),
12             |v| v,
13             BatchSize::NumBatches(1),
14         )
15     });
16 }
17 
small_setup(c: &mut Criterion)18 fn small_setup(c: &mut Criterion) {
19     let mut group = c.benchmark_group("iter_with_large_setup");
20     group.bench_function("small_setup", |b| {
21         b.iter_batched(|| SIZE, |size| size, BatchSize::NumBatches(1))
22     });
23 }
24 
short_warmup() -> Criterion25 fn short_warmup() -> Criterion {
26     Criterion::default().warm_up_time(Duration::new(1, 0))
27 }
28 
29 criterion_group! {
30     name = benches;
31     config = short_warmup();
32     targets = large_setup, small_setup
33 }
34