aboutsummaryrefslogtreecommitdiff
path: root/src/tests/aoc-2022-05/benches/main.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/tests/aoc-2022-05/benches/main.rs')
-rw-r--r--src/tests/aoc-2022-05/benches/main.rs39
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);