OPTIMATIONS
This commit is contained in:
@@ -4,3 +4,8 @@ version = "0.1.0"
|
||||
edition = "2021"
|
||||
|
||||
[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::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());
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user