From 4828f794b0b19a9cf57776e18d50656c6c449457 Mon Sep 17 00:00:00 2001 From: Firewire Date: Sun, 1 Dec 2024 02:47:05 -0500 Subject: [PATCH] OPTIMATIONS --- Days/One/OnePart2/Cargo.toml | 5 +++++ Days/One/OnePart2/config.toml | 2 ++ Days/One/OnePart2/src/main.rs | 27 ++++++++++++++++++--------- 3 files changed, 25 insertions(+), 9 deletions(-) create mode 100644 Days/One/OnePart2/config.toml diff --git a/Days/One/OnePart2/Cargo.toml b/Days/One/OnePart2/Cargo.toml index 365a1d9..d3960f1 100644 --- a/Days/One/OnePart2/Cargo.toml +++ b/Days/One/OnePart2/Cargo.toml @@ -4,3 +4,8 @@ version = "0.1.0" edition = "2021" [dependencies] + +[profile.release] +codegen-units = 1 +lto = "fat" +panic = "abort" diff --git a/Days/One/OnePart2/config.toml b/Days/One/OnePart2/config.toml new file mode 100644 index 0000000..d5135e9 --- /dev/null +++ b/Days/One/OnePart2/config.toml @@ -0,0 +1,2 @@ +[build] +rustflags = ["-C", "target-cpu=native"] \ No newline at end of file diff --git a/Days/One/OnePart2/src/main.rs b/Days/One/OnePart2/src/main.rs index 7401a06..21fd220 100644 --- a/Days/One/OnePart2/src/main.rs +++ b/Days/One/OnePart2/src/main.rs @@ -100,21 +100,29 @@ use std::fs::File; use std::io::{BufRead, BufReader}; use std::path::Path; -fn compute(mut left: Vec, mut right: Vec) -> i64 { - left.iter().fold(0, |sum, left_item| sum + (left_item * (right.iter().fold(0, |count, right_item| count + (left_item == right_item) as i64)))) +// fn compute(mut left: Vec, mut right: Vec) -> i32 { +// left.iter().fold(0, |sum, left_item| sum + (left_item * (right.iter().filter(|&n| n == left_item).count() as i32))) +// } + +fn compute(mut left: Vec, mut right: Vec) -> i32 { + let mut sum = 0; + for left_item in left.iter() { + sum += (left_item * (right.iter().filter(|&n| n == left_item).count() as i32)); + } + sum } -fn load_lists() -> (Vec, Vec) { - let mut left: Vec = vec![0]; - let mut right: Vec = vec![0]; +fn load_lists() -> (Vec, Vec) { + let mut left: Vec = vec![0]; + let mut right: Vec = vec![0]; let file = File::open(Path::new("./input")).unwrap(); let reader = BufReader::new(file); for line in reader.lines() { let line = line.unwrap(); let mut split = line.split(" "); let collection = split.collect::>(); - left.push(collection[0].parse::().unwrap()); - right.push(collection[1].parse::().unwrap()); + left.push(collection[0].parse::().unwrap()); + right.push(collection[1].parse::().unwrap()); } (left, right) } @@ -123,7 +131,8 @@ fn main() { let (left, right) = load_lists(); use std::time::Instant; let now = Instant::now(); - println!("{:?}", compute(left, right)); + let result = compute(left, right); let elapsed = now.elapsed(); - println!("Elapsed: {:?} seconds.", elapsed.as_micros()); + println!("{:?}", result); + println!("Elapsed: {:?} microseconds.", elapsed.as_micros()); }