OPTIMATIONS
This commit is contained in:
@@ -4,3 +4,8 @@ version = "0.1.0"
|
|||||||
edition = "2021"
|
edition = "2021"
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
|
|
||||||
|
[profile.release]
|
||||||
|
codegen-units = 1
|
||||||
|
lto = "fat"
|
||||||
|
panic = "abort"
|
||||||
|
|||||||
2
Days/One/OnePart2/config.toml
Normal file
2
Days/One/OnePart2/config.toml
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
[build]
|
||||||
|
rustflags = ["-C", "target-cpu=native"]
|
||||||
@@ -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());
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user