From 5099a3005cbc8ff5d0a60f2344aed02fdbec5ca2 Mon Sep 17 00:00:00 2001 From: OMGeeky <39029799+OMGeeky@users.noreply.github.com> Date: Fri, 8 Dec 2023 16:46:12 +0000 Subject: [PATCH] nightly benchmarking --- rust-toolchain.toml | 2 ++ src/day05.rs | 61 +++++++++++++++++++++++++++++++++++++++++++++ src/lib.rs | 2 ++ 3 files changed, 65 insertions(+) create mode 100644 rust-toolchain.toml diff --git a/rust-toolchain.toml b/rust-toolchain.toml new file mode 100644 index 0000000..5d56faf --- /dev/null +++ b/rust-toolchain.toml @@ -0,0 +1,2 @@ +[toolchain] +channel = "nightly" diff --git a/src/day05.rs b/src/day05.rs index cdbc4f9..c7d67a9 100644 --- a/src/day05.rs +++ b/src/day05.rs @@ -252,3 +252,64 @@ mod data { } } } + +#[cfg(test)] +mod my_tests { + use super::*; + extern crate test; + use test::Bencher; + fn get_sample_map() -> HashMap { + let data: String = Day05::get_test_data(); + let mut data = data.lines().map(|x| x.trim()); + let target_seeds = data.next().unwrap(); + println!("targets: {}", target_seeds); + let dict = parse_to_maps(data); + dict + } + fn get_sample_map_real() -> HashMap { + let data: String = read_input(05); + let mut data = data.lines().map(|x| x.trim()); + let target_seeds = data.next().unwrap(); + println!("targets: {}", target_seeds); + let dict = parse_to_maps(data); + dict + } + #[bench] + fn bench_mapping(b: &mut Bencher) { + let mapper = get_sample_map(); + b.iter(|| { + (0..10000) + .into_iter() + .for_each(|x| {map_seed_to_position(x, &mapper);}) + }) + } + #[bench] + fn bench_mapping2(b: &mut Bencher) { + let mapper = get_sample_map(); + b.iter(|| map_seed_to_position(5, &mapper)) + } + #[bench] + fn bench_parsing(b: &mut Bencher) { + b.iter(get_sample_map) + } + #[bench] + fn bench_parsing2(b: &mut Bencher) { + let data: String = Day05::get_test_data(); + let mut data = data.lines().map(|x| x.trim()); + let target_seeds = data.next().unwrap(); + println!("targets: {}", target_seeds); + b.iter(|| parse_to_maps(data.clone())) + } + #[bench] + fn bench_parsing_real(b: &mut Bencher) { + b.iter(get_sample_map_real) + } + #[bench] + fn bench_parsing2_real(b: &mut Bencher) { + let data: String = read_input(05); + let mut data = data.lines().map(|x| x.trim()); + let target_seeds = data.next().unwrap(); + println!("targets: {}", target_seeds); + b.iter(|| parse_to_maps(data.clone())) + } +} diff --git a/src/lib.rs b/src/lib.rs index feb533d..6742f7b 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,3 +1,5 @@ +#![feature(test)] + pub fn read_input(day: u8) -> T where T: From,