summaryrefslogtreecommitdiffstats
path: root/benches
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2022-12-12 03:02:01 -0500
committerJesse Luehrs <doy@tozt.net>2022-12-12 03:55:46 -0500
commit67c4936e35f1c3cf3e3cbf04302dc23ff4f764ec (patch)
treee640193f6c86abc7ff5e21955a12d8853acd00fa /benches
parent229f1057468e6f7508ef36e804bc55af224b9fab (diff)
downloadadvent-of-code-67c4936e35f1c3cf3e3cbf04302dc23ff4f764ec.tar.gz
advent-of-code-67c4936e35f1c3cf3e3cbf04302dc23ff4f764ec.zip
benchmarking
Diffstat (limited to 'benches')
-rw-r--r--benches/2020.rs46
-rw-r--r--benches/2021.rs110
-rw-r--r--benches/2022.rs58
-rw-r--r--benches/helpers/mod.rs72
4 files changed, 286 insertions, 0 deletions
diff --git a/benches/2020.rs b/benches/2020.rs
new file mode 100644
index 0000000..5135e5a
--- /dev/null
+++ b/benches/2020.rs
@@ -0,0 +1,46 @@
+#[macro_use]
+mod helpers;
+
+#[path = "../src/bin/2020/day1.rs"]
+mod day1;
+#[path = "../src/bin/2020/day2.rs"]
+mod day2;
+#[path = "../src/bin/2020/day3.rs"]
+mod day3;
+#[path = "../src/bin/2020/day4.rs"]
+mod day4;
+#[path = "../src/bin/2020/day5.rs"]
+mod day5;
+#[path = "../src/bin/2020/day6.rs"]
+mod day6;
+#[path = "../src/bin/2020/day7.rs"]
+mod day7;
+#[path = "../src/bin/2020/day8.rs"]
+mod day8;
+#[path = "../src/bin/2020/day9.rs"]
+mod day9;
+// NEXT MOD
+
+day!(2020, 1, day1);
+day!(2020, 2, day2);
+day!(2020, 3, day3);
+day!(2020, 4, day4);
+day!(2020, 5, day5);
+day!(2020, 6, day6);
+day!(2020, 7, day7);
+day!(2020, 8, day8);
+day!(2020, 9, day9);
+// NEXT DAY
+
+criterion::criterion_main!(
+ bench_2020day1,
+ bench_2020day2,
+ bench_2020day3,
+ bench_2020day4,
+ bench_2020day5,
+ bench_2020day6,
+ bench_2020day7,
+ bench_2020day8,
+ bench_2020day9,
+ // NEXT GROUP
+);
diff --git a/benches/2021.rs b/benches/2021.rs
new file mode 100644
index 0000000..a5e0cc8
--- /dev/null
+++ b/benches/2021.rs
@@ -0,0 +1,110 @@
+#[macro_use]
+mod helpers;
+
+#[path = "../src/bin/2021/day1.rs"]
+mod day1;
+#[path = "../src/bin/2021/day10.rs"]
+mod day10;
+#[path = "../src/bin/2021/day11.rs"]
+mod day11;
+#[path = "../src/bin/2021/day12.rs"]
+mod day12;
+#[path = "../src/bin/2021/day13.rs"]
+mod day13;
+#[path = "../src/bin/2021/day14.rs"]
+mod day14;
+#[path = "../src/bin/2021/day15.rs"]
+mod day15;
+#[path = "../src/bin/2021/day16.rs"]
+mod day16;
+#[path = "../src/bin/2021/day17.rs"]
+mod day17;
+#[path = "../src/bin/2021/day18.rs"]
+mod day18;
+#[path = "../src/bin/2021/day19.rs"]
+mod day19;
+#[path = "../src/bin/2021/day2.rs"]
+mod day2;
+#[path = "../src/bin/2021/day20.rs"]
+mod day20;
+#[path = "../src/bin/2021/day21.rs"]
+mod day21;
+#[path = "../src/bin/2021/day22.rs"]
+mod day22;
+#[path = "../src/bin/2021/day23.rs"]
+mod day23;
+#[path = "../src/bin/2021/day24.rs"]
+mod day24;
+#[path = "../src/bin/2021/day25.rs"]
+mod day25;
+#[path = "../src/bin/2021/day3.rs"]
+mod day3;
+#[path = "../src/bin/2021/day4.rs"]
+mod day4;
+#[path = "../src/bin/2021/day5.rs"]
+mod day5;
+#[path = "../src/bin/2021/day6.rs"]
+mod day6;
+#[path = "../src/bin/2021/day7.rs"]
+mod day7;
+#[path = "../src/bin/2021/day8.rs"]
+mod day8;
+#[path = "../src/bin/2021/day9.rs"]
+mod day9;
+// NEXT MOD
+
+day!(2021, 1, day1);
+day!(2021, 2, day2);
+day!(2021, 3, day3);
+day!(2021, 4, day4);
+day!(2021, 5, day5);
+day!(2021, 6, day6);
+day!(2021, 7, day7);
+day!(2021, 8, day8);
+day!(2021, 9, day9);
+day!(2021, 10, day10);
+day!(2021, 11, day11);
+day!(2021, 12, day12);
+day!(2021, 13, day13);
+day!(2021, 14, day14);
+day!(2021, 15, day15);
+day!(2021, 16, day16);
+day!(2021, 17, day17);
+day!(2021, 18, day18);
+day!(2021, 19, day19);
+day!(2021, 20, day20);
+day!(2021, 21, day21);
+day!(2021, 22, day22);
+day!(2021, 23, day23);
+day!(2021, 24, day24);
+day!(2021, 25, day25);
+// NEXT DAY
+
+criterion::criterion_main!(
+ bench_2021day1,
+ bench_2021day2,
+ bench_2021day3,
+ bench_2021day4,
+ bench_2021day5,
+ bench_2021day6,
+ bench_2021day7,
+ bench_2021day8,
+ bench_2021day9,
+ bench_2021day10,
+ bench_2021day11,
+ bench_2021day12,
+ bench_2021day13,
+ bench_2021day14,
+ bench_2021day15,
+ bench_2021day16,
+ bench_2021day17,
+ bench_2021day18,
+ bench_2021day19,
+ bench_2021day20,
+ bench_2021day21,
+ bench_2021day22,
+ bench_2021day23,
+ bench_2021day24,
+ bench_2021day25,
+ // NEXT GROUP
+);
diff --git a/benches/2022.rs b/benches/2022.rs
new file mode 100644
index 0000000..b6ee3df
--- /dev/null
+++ b/benches/2022.rs
@@ -0,0 +1,58 @@
+#[macro_use]
+mod helpers;
+
+#[path = "../src/bin/2022/day1.rs"]
+mod day1;
+#[path = "../src/bin/2022/day10.rs"]
+mod day10;
+#[path = "../src/bin/2022/day11.rs"]
+mod day11;
+#[path = "../src/bin/2022/day12.rs"]
+mod day12;
+#[path = "../src/bin/2022/day2.rs"]
+mod day2;
+#[path = "../src/bin/2022/day3.rs"]
+mod day3;
+#[path = "../src/bin/2022/day4.rs"]
+mod day4;
+#[path = "../src/bin/2022/day5.rs"]
+mod day5;
+#[path = "../src/bin/2022/day6.rs"]
+mod day6;
+#[path = "../src/bin/2022/day7.rs"]
+mod day7;
+#[path = "../src/bin/2022/day8.rs"]
+mod day8;
+#[path = "../src/bin/2022/day9.rs"]
+mod day9;
+// NEXT MOD
+
+day!(2022, 1, day1);
+day!(2022, 2, day2);
+day!(2022, 3, day3);
+day!(2022, 4, day4);
+day!(2022, 5, day5);
+day!(2022, 6, day6);
+day!(2022, 7, day7);
+day!(2022, 8, day8);
+day!(2022, 9, day9);
+day!(2022, 10, day10);
+day!(2022, 11, day11);
+day!(2022, 12, day12);
+// NEXT DAY
+
+criterion::criterion_main!(
+ bench_2022day1,
+ bench_2022day2,
+ bench_2022day3,
+ bench_2022day4,
+ bench_2022day5,
+ bench_2022day6,
+ bench_2022day7,
+ bench_2022day8,
+ bench_2022day9,
+ bench_2022day10,
+ bench_2022day11,
+ bench_2022day12,
+ // NEXT GROUP
+);
diff --git a/benches/helpers/mod.rs b/benches/helpers/mod.rs
new file mode 100644
index 0000000..7303ebf
--- /dev/null
+++ b/benches/helpers/mod.rs
@@ -0,0 +1,72 @@
+macro_rules! day {
+ ($year:expr, $day:expr, $mod:ident) => {
+ paste::paste! {
+ #[allow(unused_must_use)]
+ fn [<bench_ $year $mod _parse>](c: &mut criterion::Criterion) {
+ c.bench_function(
+ &format!("{} day {} parse", $year, $day),
+ |b| {
+ b.iter_batched(
+ || advent_of_code::parse::data($year, $day).unwrap(),
+ |data| $mod::parse(criterion::black_box(data)),
+ criterion::BatchSize::PerIteration,
+ )
+ }
+ );
+ }
+ }
+
+ paste::paste! {
+ #[allow(unused_must_use)]
+ fn [<bench_ $year $mod _part1>](c: &mut criterion::Criterion) {
+ c.bench_function(
+ &format!("{} day {} part 1", $year, $day),
+ |b| {
+ b.iter_batched(
+ || {
+ $mod::parse(
+ advent_of_code::parse::data($year, $day)
+ .unwrap(),
+ )
+ .unwrap()
+ },
+ |data| $mod::part1(criterion::black_box(data)),
+ criterion::BatchSize::PerIteration,
+ )
+ }
+ );
+ }
+ }
+
+ paste::paste! {
+ #[allow(unused_must_use)]
+ fn [<bench_ $year $mod _part2>](c: &mut criterion::Criterion) {
+ c.bench_function(
+ &format!("{} day {} part 2", $year, $day),
+ |b| {
+ b.iter_batched(
+ || {
+ $mod::parse(
+ advent_of_code::parse::data($year, $day)
+ .unwrap(),
+ )
+ .unwrap()
+ },
+ |data| $mod::part2(criterion::black_box(data)),
+ criterion::BatchSize::PerIteration,
+ )
+ }
+ );
+ }
+ }
+
+ paste::paste! {
+ criterion::criterion_group!(
+ [<bench_ $year $mod>],
+ [<bench_ $year $mod _parse>],
+ [<bench_ $year $mod _part1>],
+ [<bench_ $year $mod _part2>],
+ );
+ }
+ };
+}