This commit is contained in:
nora 2023-12-03 14:56:40 +01:00
parent 546149ae38
commit 7bbecaedfe
32 changed files with 48 additions and 48 deletions

View file

@ -1,5 +1,5 @@
[package]
name = "day1"
name = "day01"
version = "0.1.0"
edition = "2021"

View file

@ -4,27 +4,27 @@ benchmarks:
Ensure that `input.txt` contains many, many copies of the actual input, the actual input is way too small.
`cargo build --release && hyperfine 'target/release/day1 part2 naive' 'target/release/day1 part2 zero_alloc' 'target/release/day1 part2 branchless' 'target/release/day1 part2 vectorized'`
`cargo build --release && hyperfine 'target/release/day01 part2 naive' 'target/release/day01 part2 zero_alloc' 'target/release/day01 part2 branchless' 'target/release/day01 part2 vectorized'`
```
Benchmark 1: target/release/day1 part2 naive
Benchmark 1: target/release/day01 part2 naive
Time (mean ± σ): 1.066 s ± 0.017 s [User: 1.048 s, System: 0.018 s]
Range (min … max): 1.049 s … 1.099 s 10 runs
Benchmark 2: target/release/day1 part2 zero_alloc
Benchmark 2: target/release/day01 part2 zero_alloc
Time (mean ± σ): 212.7 ms ± 3.5 ms [User: 195.0 ms, System: 17.6 ms]
Range (min … max): 206.9 ms … 219.0 ms 14 runs
Benchmark 3: target/release/day1 part2 branchless
Benchmark 3: target/release/day01 part2 branchless
Time (mean ± σ): 137.2 ms ± 1.8 ms [User: 117.5 ms, System: 19.6 ms]
Range (min … max): 133.5 ms … 142.2 ms 21 runs
Benchmark 4: target/release/day1 part2 vectorized
Benchmark 4: target/release/day01 part2 vectorized
Time (mean ± σ): 87.9 ms ± 0.9 ms [User: 68.6 ms, System: 19.1 ms]
Range (min … max): 86.5 ms … 90.6 ms 33 runs
Summary
target/release/day1 part2 vectorized ran
1.56 ± 0.03 times faster than target/release/day1 part2 branchless
2.42 ± 0.05 times faster than target/release/day1 part2 zero_alloc
12.13 ± 0.22 times faster than target/release/day1 part2 naive
target/release/day01 part2 vectorized ran
1.56 ± 0.03 times faster than target/release/day01 part2 branchless
2.42 ± 0.05 times faster than target/release/day01 part2 zero_alloc
12.13 ± 0.22 times faster than target/release/day01 part2 naive
```

View file

@ -0,0 +1,3 @@
fn main() {
day01::bench();
}

View file

@ -9,13 +9,13 @@ mod vectorized;
mod zero_alloc;
pub fn main() {
helper::main::<Day1>(include_str!("../input.txt"));
helper::main::<Day01>(include_str!("../input.txt"));
}
struct Day1;
struct Day01;
helper::define_variants! {
day => crate::Day1;
day => crate::Day01;
part1 {
basic => crate::part1;
}
@ -28,7 +28,7 @@ helper::define_variants! {
}
}
impl Day for Day1 {
impl Day for Day01 {
fn pad_input(input: &str) -> std::borrow::Cow<str> {
let mut input = input.to_owned();
input.reserve(10); // enough to read u64
@ -69,7 +69,7 @@ fn part1(input: &str) -> u64 {
}
helper::tests! {
day1 Day1;
day01 Day01;
part1 {
"../input_small1.txt" => 142;
"../input.txt" => 54632;

3
2023/day01/src/main.rs Normal file
View file

@ -0,0 +1,3 @@
fn main() {
day01::main();
}

View file

@ -1,5 +1,5 @@
[package]
name = "day2"
name = "day02"
version = "0.1.0"
edition = "2021"

View file

@ -0,0 +1,3 @@
fn main() {
day02::bench();
}

View file

@ -9,13 +9,13 @@ use nom::{
};
pub fn main() {
helper::main::<Day2>(include_str!("../input.txt"));
helper::main::<Day02>(include_str!("../input.txt"));
}
struct Day2;
struct Day02;
helper::define_variants! {
day => crate::Day2;
day => crate::Day02;
part1 {
basic => crate::part1;
}
@ -24,7 +24,7 @@ helper::define_variants! {
}
}
impl Day for Day2 {
impl Day for Day02 {
fn part1() -> helper::Variants {
part1_variants!(construct_variants)
}
@ -99,7 +99,7 @@ fn part2(input: &str) -> u64 {
}
helper::tests! {
day2 Day2;
day02 Day02;
part1 {
small => 8;
default => 1931;

3
2023/day02/src/main.rs Normal file
View file

@ -0,0 +1,3 @@
fn main() {
day02::main();
}

View file

@ -1,5 +1,5 @@
[package]
name = "day3"
name = "day03"
version = "0.1.0"
edition = "2021"

View file

@ -0,0 +1,3 @@
fn main() {
day03::bench();
}

View file

@ -3,13 +3,13 @@ use std::collections::HashMap;
use helper::Day;
pub fn main() {
helper::main::<Day3>(include_str!("../input.txt"));
helper::main::<Day03>(include_str!("../input.txt"));
}
struct Day3;
struct Day03;
helper::define_variants! {
day => crate::Day3;
day => crate::Day03;
part1 {
basic => crate::part1;
}
@ -18,7 +18,7 @@ helper::define_variants! {
}
}
impl Day for Day3 {
impl Day for Day03 {
fn part1() -> helper::Variants {
part1_variants!(construct_variants)
}
@ -128,7 +128,7 @@ fn part2(input: &str) -> u64 {
}
helper::tests! {
day3 Day3;
day03 Day03;
part1 {
small => 4361;
default => 537832;

3
2023/day03/src/mainrs Normal file
View file

@ -0,0 +1,3 @@
fn main() {
day03::main();
}

View file

@ -1,3 +0,0 @@
fn main() {
day1::bench();
}

View file

@ -1,3 +0,0 @@
fn main() {
day1::main();
}

View file

@ -1,3 +0,0 @@
fn main() {
day2::bench();
}

View file

@ -1,3 +0,0 @@
fn main() {
day2::main();
}

View file

@ -1,3 +0,0 @@
fn main() {
day3::bench();
}

View file

@ -1,3 +0,0 @@
fn main() {
day3::main();
}