OPTIMATIONS

This commit is contained in:
2024-12-01 02:47:05 -05:00
parent caca9c927d
commit 4828f794b0
3 changed files with 25 additions and 9 deletions

View File

@@ -4,3 +4,8 @@ version = "0.1.0"
edition = "2021" edition = "2021"
[dependencies] [dependencies]
[profile.release]
codegen-units = 1
lto = "fat"
panic = "abort"

View File

@@ -0,0 +1,2 @@
[build]
rustflags = ["-C", "target-cpu=native"]

View File

@@ -100,21 +100,29 @@ use std::fs::File;
use std::io::{BufRead, BufReader}; use std::io::{BufRead, BufReader};
use std::path::Path; use std::path::Path;
fn compute(mut left: Vec<i64>, mut right: Vec<i64>) -> i64 { // fn compute(mut left: Vec<i32>, mut right: Vec<i32>) -> i32 {
left.iter().fold(0, |sum, left_item| sum + (left_item * (right.iter().fold(0, |count, right_item| count + (left_item == right_item) as i64)))) // 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<i32>, mut right: Vec<i32>) -> 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<i64>, Vec<i64>) { fn load_lists() -> (Vec<i32>, Vec<i32>) {
let mut left: Vec<i64> = vec![0]; let mut left: Vec<i32> = vec![0];
let mut right: Vec<i64> = vec![0]; let mut right: Vec<i32> = vec![0];
let file = File::open(Path::new("./input")).unwrap(); let file = File::open(Path::new("./input")).unwrap();
let reader = BufReader::new(file); let reader = BufReader::new(file);
for line in reader.lines() { for line in reader.lines() {
let line = line.unwrap(); let line = line.unwrap();
let mut split = line.split(" "); let mut split = line.split(" ");
let collection = split.collect::<Vec<&str>>(); let collection = split.collect::<Vec<&str>>();
left.push(collection[0].parse::<i64>().unwrap()); left.push(collection[0].parse::<i32>().unwrap());
right.push(collection[1].parse::<i64>().unwrap()); right.push(collection[1].parse::<i32>().unwrap());
} }
(left, right) (left, right)
} }
@@ -123,7 +131,8 @@ fn main() {
let (left, right) = load_lists(); let (left, right) = load_lists();
use std::time::Instant; use std::time::Instant;
let now = Instant::now(); let now = Instant::now();
println!("{:?}", compute(left, right)); let result = compute(left, right);
let elapsed = now.elapsed(); let elapsed = now.elapsed();
println!("Elapsed: {:?} seconds.", elapsed.as_micros()); println!("{:?}", result);
println!("Elapsed: {:?} microseconds.", elapsed.as_micros());
} }