add benchmarking args
This commit is contained in:
parent
fe6effef5e
commit
19bd8c4d93
35
2022/day6.rs
35
2022/day6.rs
|
@ -1,5 +1,7 @@
|
|||
#![allow(dead_code)]
|
||||
use std::env;
|
||||
use std::fs;
|
||||
use std::time::Instant;
|
||||
|
||||
type Int = usize;
|
||||
|
||||
|
@ -87,14 +89,19 @@ fn find_first_unique_runs(s: &Vec<u8>) -> (Int, Int) {
|
|||
return (four+2, fourteen+8);
|
||||
}
|
||||
|
||||
fn run_once(s: &Vec<u8>) {
|
||||
let four = find_first_unique_run(&s, 4, 0);
|
||||
let fourteen = find_first_unique_run(&s, 14, four);
|
||||
println!("Part 1: {}", four);
|
||||
println!("Part 2: {}", fourteen);
|
||||
}
|
||||
fn main() {
|
||||
let mut filename = "input/6";
|
||||
let mut iterations = 1_000_000;
|
||||
let args: Vec<String> = env::args().collect();
|
||||
match args.len() {
|
||||
3 => {filename = &args[1]; iterations = args[2].parse().expect(&("Invalid number for iterations: ".to_owned() + &args[2]))},
|
||||
2 => filename = &args[1],
|
||||
_ => (),
|
||||
};
|
||||
let s: Vec<u8> = fs::read(filename).expect("Input not found!");
|
||||
|
||||
fn run_many(s: &Vec<u8>, iterations: usize) {
|
||||
println!("Running {} iterations:", iterations);
|
||||
let t0 = Instant::now();
|
||||
let mut four = 0;
|
||||
let mut fourteen = 0;
|
||||
for _ in 0..iterations {
|
||||
|
@ -102,17 +109,9 @@ fn run_many(s: &Vec<u8>, iterations: usize) {
|
|||
// fourteen = find_first_unique_run(&s, 14, four);
|
||||
(four, fourteen) = find_first_unique_runs(&s);
|
||||
}
|
||||
let duration = t0.elapsed();
|
||||
let per_iteration = duration / iterations;
|
||||
println!("Part 1: {}", four);
|
||||
println!("Part 2: {}", fourteen);
|
||||
println!("Completed {} iterations", iterations);
|
||||
}
|
||||
|
||||
fn main() {
|
||||
let input: Vec<u8> = fs::read("input/6").expect("Input not found!");
|
||||
println!("Input is {} long", input.len());
|
||||
// run_once(&input);
|
||||
run_many(&input, 1_000_000);
|
||||
// let (four, fourteen) = find_first_unique_runs(&input);
|
||||
// println!("Part 1: {}", four);
|
||||
// println!("Part 2: {}", fourteen);
|
||||
println!("Completed {} iterations in {:.3}s (~{}ns each)", iterations, duration.as_secs_f32(), per_iteration.as_nanos());
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue