diff options
Diffstat (limited to 'src/tests/aoc-2022-05/benches/main.rs')
-rw-r--r-- | src/tests/aoc-2022-05/benches/main.rs | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/src/tests/aoc-2022-05/benches/main.rs b/src/tests/aoc-2022-05/benches/main.rs new file mode 100644 index 0000000..1550359 --- /dev/null +++ b/src/tests/aoc-2022-05/benches/main.rs @@ -0,0 +1,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); |