From 5205101ab18d1303269d34b96e9fdc1ba3079db6 Mon Sep 17 00:00:00 2001
From: mflinn-broad <mflinn@broadinstitute.org>
Date: Sun, 12 Dec 2021 11:07:22 -0500
Subject: [PATCH] duration tracking

---
 src/main.rs | 59 ++++++++++++++++++++++++++++++++++++++++++++++-------
 1 file changed, 52 insertions(+), 7 deletions(-)

diff --git a/src/main.rs b/src/main.rs
index db7a06f..cb83c22 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -1,33 +1,78 @@
 use advent_2021::days::*;
+use itertools::Itertools;
 use std::time::{Duration, Instant};
+use std::collections::HashMap;
 
 fn main() {
     let start = Instant::now();
+    let mut day_durations: HashMap<usize, Duration> = HashMap::new();
+    let day_1_start = Instant::now();
     println!("Day 1 --------");
     day1::run();
+    day_durations.insert(1, day_1_start.elapsed());
+
+    let day_2_start = Instant::now();
     println!("Day 2 --------");
     day2::run();
-    println!("Day 3 -------");
+    day_durations.insert(2, day_2_start.elapsed());
+
+    let day_3_start = Instant::now();
+    println!("Day 3 --------");
     day3::run();
+    day_durations.insert(3, day_3_start.elapsed());
+
+    let day_4_start = Instant::now();
     println!("Day 4 --------");
     day4::run();
+    day_durations.insert(4, day_4_start.elapsed());
+
+    let day_5_start = Instant::now();
     println!("Day 5 --------");
     day5::run();
+    day_durations.insert(5, day_5_start.elapsed());
+
+    let day_6_start = Instant::now();
     println!("Day 6 --------");
     day6::run();
+    day_durations.insert(6, day_6_start.elapsed());
+
+    let day_7_start = Instant::now();
     println!("Day 7 --------");
     day7::run();
+    day_durations.insert(7, day_7_start.elapsed());
+
+    let day_8_start = Instant::now();
     println!("Day 8 --------");
     day8::run();
-    println!("Day 9 ---------");
+    day_durations.insert(8, day_8_start.elapsed());
+
+    let day_9_start = Instant::now();
+    println!("Day 9 --------");
     day9::run();
-    println!("Day 10 ---------");
+    day_durations.insert(9, day_9_start.elapsed());
+
+    let day_10_start = Instant::now();
+    println!("Day 10 --------");
     day10::run();
-    println!("Day 11 ---------");
+    day_durations.insert(10, day_10_start.elapsed());
+
+    let day_11_start = Instant::now();
+    println!("Day 11 --------");
     day11::run();
-    println!("Day 12 ---------");
+    day_durations.insert(11, day_11_start.elapsed());
+
+    let day_12_start = Instant::now();
+    println!("Day 12 --------");
     day12::run();
-    let duration = start.elapsed();
+    day_durations.insert(12, day_12_start.elapsed());
+
+    let total_duration = start.elapsed();
+
+    println!("Total time to run all solutions: {:?}", total_duration);
 
-    println!("Total time to run all solutions: {:?}", duration);
+    day_durations.iter()
+        .sorted_by(|(_, dur_1), (_, dur_2)| dur_2.cmp(dur_1))
+        .for_each(|(day, dur)| {
+            println!("Duration to run day {}: {:?}", day, dur);
+        })
 }