Marcj schreef op dinsdag 20 december 2022 @ 18:19:
...
Day 16 from day16.txt:
Part 1: 1923 in 0,027 seconds
Part 2: 2594 in 0,045 seconds
Full run in 0,111 seconds
Day 16 from day16_big-1.txt:
Part 1: 117949 in 0,230 seconds
Part 2: 125937 in 0,357 seconds
Full run in 0,631 seconds
Day 16 from day16_big-2.txt:
Part 1: 113928 in 0,267 seconds
Part 2: 130572 in 0,348 seconds
Full run in 0,678 seconds
Day 16 from day16_big-3.txt:
Part 1: 132860 in 0,166 seconds
Part 2: 140630 in 0,294 seconds
Full run in 0,507 seconds
Day 16 from day16_big-4.txt:
Part 1: 137838 in 0,403 seconds
Part 2: 141648 in 0,443 seconds
Full run in 0,894 seconds
Day 16 from day16_big-5.txt:
Part 1: 148452 in 5,716 seconds
Part 2: 166998 in 7,024 seconds
Full run in 12,787 seconds
Day 16 from day16_big-6.txt:
Part 1: 158683 in 6,397 seconds
Part 2: 181585 in 63,713 seconds
Full run in 70,157 seconds
Day 16 from day16_big-7.txt:
Part 1: 58361 in 0,004 seconds
Part 2: 52131 in 0,003 seconds
Full run in 0,097 seconds
...
Ik ben de laatste tijd met Rust bezig geweest om toch eens een taal te leren die wat dichter op de machine zat. Hiermee kan ik de meeste runtimes met ongeveer een factor 4 - 6 versnellen. Wat resultaten voor deze use-case, ik vond het leuk om
dag 16 opnieuw te implementeren.
$ target/release/day16 < 2022/big_inputs/day16_big-1.txt
Executing
├── Input parsed in 706µs
├── Part 1 calculated in 76,496µs: 117949
├── Part 2 calculated in 117,812µs: 125937
└── Total time: 195,060µs
$ target/release/day16 < 2022/big_inputs/day16_big-2.txt
Executing
├── Input parsed in 1,057µs
├── Part 1 calculated in 92,986µs: 113928
├── Part 2 calculated in 77,699µs: 130572
└── Total time: 171,778µs
$ target/release/day16 < 2022/big_inputs/day16_big-3.txt
Executing
├── Input parsed in 637µs
├── Part 1 calculated in 71,237µs: 132860
├── Part 2 calculated in 100,572µs: 140630
└── Total time: 172,493µs
$ target/release/day16 < 2022/big_inputs/day16_big-4.txt
Executing
├── Input parsed in 647µs
├── Part 1 calculated in 112,746µs: 137838
├── Part 2 calculated in 161,786µs: 141648
└── Total time: 275,218µs
$ target/release/day16 < 2022/big_inputs/day16_big-5.txt
Executing
├── Input parsed in 684µs
├── Part 1 calculated in 1,742,271µs: 148452
├── Part 2 calculated in 2,056,727µs: 166998
└── Total time: 3,799,795µs
$ target/release/day16 < 2022/big_inputs/day16_big-6.txt
Executing
├── Input parsed in 1,069µs
├── Part 1 calculated in 2,139,708µs: 158683
├── Part 2 calculated in 6,206,188µs: 181585
└── Total time: 8,347,046µs
$ target/release/day16 < 2022/big_inputs/day16_big-7.txt
Executing
├── Input parsed in 2,799µs
├── Part 1 calculated in 50µs: 58361
├── Part 2 calculated in 99µs: 52131
└── Total time: 2,972µs
Of het waard is? Ik vind de Kotlin versie wel een stuk leesbaarder, maar de Rust versie kun je wel dingen doen die dichter op de hardware zitten en nog behoorlijk wat performance vinden...
ps. Deze code is gerund op een M1 macBook Pro