1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
use aoc_2022_05::{gen_random_moves, gen_random_tops, perform_move_9000, perform_move_9001};
use criterion::{criterion_group, criterion_main, BatchSize, BenchmarkId, Criterion};
use rand::{rngs::StdRng, SeedableRng};
fn run_benches(c: &mut Criterion) {
let mut rng = StdRng::seed_from_u64(42);
for size in [100, 400, 800, 1200, 1600, 2000].iter() {
c.bench_with_input(BenchmarkId::new("part1", size), size, |b, &n| {
b.iter_batched_ref(
|| (gen_random_tops(&mut rng, n), gen_random_moves(&mut rng, n)),
|(tops, moves)| {
for mv in moves {
perform_move_9000(tops, *mv);
}
},
BatchSize::SmallInput,
)
});
c.bench_with_input(BenchmarkId::new("part2", size), size, |b, &n| {
b.iter_batched_ref(
|| (gen_random_tops(&mut rng, n), gen_random_moves(&mut rng, n)),
|(tops, moves)| {
for mv in moves {
perform_move_9001(tops, *mv);
}
},
BatchSize::SmallInput,
)
});
}
}
criterion_group!(
name = benches;
config = Criterion::default().sample_size(10);
targets = run_benches
);
criterion_main!(benches);
|