This crate uses cargo-aoc
for automating the boilerplate.
To install it, run
cargo install cargo-aoc
For each challenge, at least 2 unit tests exist asserting that parts 1 and 2 are correct (after manually verifying the answers on the website). These serve as regression tests in case I touch up some previous days (for instance, to reduce duplication with later days)
To run the current day, use
cargo aoc
To benchmark the current day, use
cargo aoc bench
To run a specific day (e.g day 1), use
cargo aoc -d1
To run a specific day and part (e.g day 1, part 2), use
cargo aoc -d1 -p2
To run all solutions, use
cargo run --release
To run all unit tests, use
cargo test --release
To download the input for today, run
cargo aoc input
To download the input for a previous day X, run
cargo aoc input -dX
Code the generator to parse this day's input and the solutions to each part in src/dayX.rs
.
Make your solution visible at the top level by adding pub mod dayX
in src/lib.rs
.
If the session id expire, log in to the advent of code website, and obtain the cookie id (In Chrome: Shift+F9, Cookies tab, and copy the "Value" for the "session" field). Then run
cargo aoc credentials -s <session id>
Benchmarks obtained on my T14 with AMD Ryzen 7 PRO 4750U.
Day1 - Part1/(default) time: [489.63 ns 491.12 ns 493.62 ns]
Found 3 outliers among 100 measurements (3.00%)
1 (1.00%) high mild
2 (2.00%) high severe
Day1 - Part2/Naive time: [3.0232 us 3.0333 us 3.0438 us]
Found 2 outliers among 100 measurements (2.00%)
2 (2.00%) high mild
Day1 - Part2/NoAlloc time: [486.22 ns 486.41 ns 486.63 ns]
Found 1 outliers among 100 measurements (1.00%)
1 (1.00%) high mild
Day2 - Part1/Naive time: [1.2443 us 1.2464 us 1.2485 us]
Found 17 outliers among 100 measurements (17.00%)
3 (3.00%) low severe
13 (13.00%) low mild
1 (1.00%) high severe
Day2 - Part1/Unordered time: [1.1393 us 1.1401 us 1.1409 us]
Found 2 outliers among 100 measurements (2.00%)
1 (1.00%) high mild
1 (1.00%) high severe
Day2 - Part2/(default) time: [1.3397 us 1.3408 us 1.3422 us]
Found 6 outliers among 100 measurements (6.00%)
3 (3.00%) high mild
3 (3.00%) high severe
Day3 - Part1/(default) time: [591.20 ns 591.29 ns 591.36 ns]
Found 6 outliers among 100 measurements (6.00%)
1 (1.00%) low severe
5 (5.00%) high mild
Day3 - Part2/(default) time: [16.234 us 16.267 us 16.306 us]
Found 18 outliers among 100 measurements (18.00%)
4 (4.00%) low severe
14 (14.00%) low mild
Day4 - Part1/(default) time: [7.0234 us 7.0278 us 7.0348 us]
Found 9 outliers among 100 measurements (9.00%)
5 (5.00%) high mild
4 (4.00%) high severe
Day4 - Part2/(default) time: [18.591 us 18.603 us 18.616 us]
Found 6 outliers among 100 measurements (6.00%)
5 (5.00%) high mild
1 (1.00%) high severe
Day5 - Part1/(default) time: [1.8155 ms 1.8168 ms 1.8182 ms]
Found 4 outliers among 100 measurements (4.00%)
2 (2.00%) high mild
2 (2.00%) high severe
Day5 - Part2/(default) time: [2.5128 ms 2.5204 ms 2.5286 ms]
Found 11 outliers among 100 measurements (11.00%)
7 (7.00%) high mild
4 (4.00%) high severe
Day6 - Part1/(default) time: [468.32 ns 469.11 ns 470.13 ns]
Found 6 outliers among 100 measurements (6.00%)
2 (2.00%) high mild
4 (4.00%) high severe
Day6 - Part2/(default) time: [1.4850 us 1.4852 us 1.4854 us]
Found 12 outliers among 100 measurements (12.00%)
5 (5.00%) high mild
7 (7.00%) high severe
Day7 - Part1/(default) time: [11.867 us 11.881 us 11.897 us]
Found 6 outliers among 100 measurements (6.00%)
5 (5.00%) high mild
1 (1.00%) high severe
Day7 - Part2/(default) time: [19.746 us 19.751 us 19.756 us]
Found 2 outliers among 100 measurements (2.00%)
1 (1.00%) high mild
1 (1.00%) high severe
Day8 - Part1/(default) time: [1.1012 us 1.1017 us 1.1022 us]
Found 6 outliers among 100 measurements (6.00%)
1 (1.00%) low mild
3 (3.00%) high mild
2 (2.00%) high severe
Day8 - Part2/(default) time: [18.148 us 18.204 us 18.262 us]
Day9 - Part1/(default) time: [15.850 us 15.856 us 15.862 us]
Found 7 outliers among 100 measurements (7.00%)
1 (1.00%) low mild
3 (3.00%) high mild
3 (3.00%) high severe
Day9 - Part2/(default) time: [2.2132 ms 2.2168 ms 2.2212 ms]
Found 14 outliers among 100 measurements (14.00%)
4 (4.00%) low mild
2 (2.00%) high mild
8 (8.00%) high severe
Day10 - Part1/(default) time: [34.503 us 34.527 us 34.549 us]
Found 2 outliers among 100 measurements (2.00%)
1 (1.00%) high mild
1 (1.00%) high severe
Day10 - Part2/(default) time: [33.861 us 33.897 us 33.938 us]
Day11 - Part1/Buckets time: [347.69 us 347.96 us 348.25 us]
Found 3 outliers among 100 measurements (3.00%)
3 (3.00%) high mild
Day11 - Part1/Grid time: [235.95 us 236.29 us 236.66 us]
Found 6 outliers among 100 measurements (6.00%)
1 (1.00%) low mild
2 (2.00%) high mild
3 (3.00%) high severe
Day11 - Part2/Buckets time: [1.1559 ms 1.1572 ms 1.1588 ms]
Found 2 outliers among 100 measurements (2.00%)
1 (1.00%) high mild
1 (1.00%) high severe
Day11 - Part2/Grid time: [803.00 us 804.98 us 807.16 us]
Found 12 outliers among 100 measurements (12.00%)
3 (3.00%) low mild
9 (9.00%) high severe
Day12 - Part1/(default) time: [83.275 us 83.317 us 83.367 us]
Found 4 outliers among 100 measurements (4.00%)
1 (1.00%) high mild
3 (3.00%) high severe
Day12 - Part2/(default) time: [2.4691 ms 2.4880 ms 2.5070 ms]
Day13 - Part1/(default) time: [18.714 us 18.796 us 18.892 us]
Found 14 outliers among 100 measurements (14.00%)
6 (6.00%) high mild
8 (8.00%) high severe
Day13 - Part2/(default) time: [124.91 us 125.06 us 125.23 us]
Found 8 outliers among 100 measurements (8.00%)
5 (5.00%) high mild
3 (3.00%) high severe
Day14 - Part1/(default) time: [2.5670 us 2.5713 us 2.5755 us]
Found 1 outliers among 100 measurements (1.00%)
1 (1.00%) high mild
Day14 - Part2/(default) time: [10.650 us 10.680 us 10.729 us]
Found 5 outliers among 100 measurements (5.00%)
2 (2.00%) high mild
3 (3.00%) high severe
Day15 - Part1/(default) time: [908.31 us 914.37 us 921.71 us]
Found 8 outliers among 100 measurements (8.00%)
2 (2.00%) high mild
6 (6.00%) high severe
Day15 - Part2/(default) time: [46.162 ms 46.431 ms 46.696 ms]
Day16 - Part1/(default) time: [17.425 us 17.434 us 17.443 us]
Found 6 outliers among 100 measurements (6.00%)
1 (1.00%) low mild
4 (4.00%) high mild
1 (1.00%) high severe
Day16 - Part2/(default) time: [18.828 us 18.839 us 18.850 us]
Day17 - Part1/(default) time: [212.33 us 212.81 us 213.33 us]
Found 4 outliers among 100 measurements (4.00%)
4 (4.00%) high mild
Day17 - Part2/(default) time: [238.28 us 239.56 us 240.78 us]
Found 1 outliers among 100 measurements (1.00%)
1 (1.00%) high mild
Too slow for bench. Reporting result from cargo aoc -d19
instead
AOC 2021
Day 19 - Part 1 : 365
generator: 7.28717ms,
runner: 269.107763ms
Day 19 - Part 2 : 11060
generator: 4.994979ms,
runner: 264.255539ms
Day20 - Part1/(default) time: [461.96 us 462.22 us 462.53 us]
Found 1 outliers among 100 measurements (1.00%)
1 (1.00%) high mild
Day20 - Part2/(default) time: [23.782 ms 23.810 ms 23.846 ms]
Found 2 outliers among 100 measurements (2.00%)
2 (2.00%) high mild