add benchmarking args

This commit is contained in:
Luke Hubmayer-Werner 2022-12-07 18:28:18 +10:30
parent fe6effef5e
commit 19bd8c4d93
1 changed files with 17 additions and 18 deletions

View File

@ -1,5 +1,7 @@
#![allow(dead_code)] #![allow(dead_code)]
use std::env;
use std::fs; use std::fs;
use std::time::Instant;
type Int = usize; type Int = usize;
@ -87,14 +89,19 @@ fn find_first_unique_runs(s: &Vec<u8>) -> (Int, Int) {
return (four+2, fourteen+8); return (four+2, fourteen+8);
} }
fn run_once(s: &Vec<u8>) { fn main() {
let four = find_first_unique_run(&s, 4, 0); let mut filename = "input/6";
let fourteen = find_first_unique_run(&s, 14, four); let mut iterations = 1_000_000;
println!("Part 1: {}", four); let args: Vec<String> = env::args().collect();
println!("Part 2: {}", fourteen); 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 four = 0;
let mut fourteen = 0; let mut fourteen = 0;
for _ in 0..iterations { for _ in 0..iterations {
@ -102,17 +109,9 @@ fn run_many(s: &Vec<u8>, iterations: usize) {
// fourteen = find_first_unique_run(&s, 14, four); // fourteen = find_first_unique_run(&s, 14, four);
(four, fourteen) = find_first_unique_runs(&s); (four, fourteen) = find_first_unique_runs(&s);
} }
let duration = t0.elapsed();
let per_iteration = duration / iterations;
println!("Part 1: {}", four); println!("Part 1: {}", four);
println!("Part 2: {}", fourteen); println!("Part 2: {}", fourteen);
println!("Completed {} iterations", iterations); println!("Completed {} iterations in {:.3}s (~{}ns each)", iterations, duration.as_secs_f32(), per_iteration.as_nanos());
}
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);
} }