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"
[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::path::Path;
fn compute(mut left: Vec<i64>, mut right: Vec<i64>) -> 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<i32>, mut right: Vec<i32>) -> 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<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>) {
let mut left: Vec<i64> = vec![0];
let mut right: Vec<i64> = vec![0];
fn load_lists() -> (Vec<i32>, Vec<i32>) {
let mut left: Vec<i32> = vec![0];
let mut right: Vec<i32> = 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::<Vec<&str>>();
left.push(collection[0].parse::<i64>().unwrap());
right.push(collection[1].parse::<i64>().unwrap());
left.push(collection[0].parse::<i32>().unwrap());
right.push(collection[1].parse::<i32>().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());
}