Parallelised the execution of each day

This commit is contained in:
2023-12-05 19:33:10 +00:00
parent ed05221dff
commit 43e3a8ac35
10 changed files with 125 additions and 88 deletions
+20 -4
View File
@@ -5,8 +5,9 @@ use std::error::Error;
use solutions::*;
fn main() -> Result<(), Box<dyn Error>> {
let days: Vec<Box<dyn Solution>> = vec![
#[tokio::main]
async fn main() -> Result<(), Box<dyn Error>> {
let days: Vec<Box<dyn Solution + Sync>> = vec![
Box::new(day01::Day01 {}),
Box::new(day02::Day02 {}),
Box::new(day03::Day03 {}),
@@ -15,9 +16,24 @@ fn main() -> Result<(), Box<dyn Error>> {
Box::new(day06::Day06 {}),
];
let mut t = vec![];
// Run through and generate solutions
for day in days.iter().rev() {
day.run()?;
for day in days.leak().iter().rev() {
let task = tokio::spawn(async { day.run().unwrap() });
t.push(task);
}
let mut days = vec![];
for thread in t {
days.push(thread.await?);
}
for day in days {
println!("========= Day {} ==========", day.day);
println!("Part1 Result: {}", day.part1);
println!("Part2 Result: {}", day.part2);
println!("========= {}ms =========", day.time.as_millis());
}
Ok(())