(rust) day 4: add multithreading

This commit is contained in:
kageru 2018-12-05 13:29:19 +01:00
parent dc247bf031
commit 5a9b8e7e69
Signed by: kageru
GPG Key ID: 8282A2BEA4ADA3D2
2 changed files with 7 additions and 6 deletions

View File

@ -5,4 +5,5 @@ authors = ["kageru <kageru@encode.moe>"]
[dependencies]
text_io = "0.1.7"
rayon = "1.0.3"

View File

@ -1,5 +1,7 @@
#[macro_use] extern crate text_io;
extern crate rayon;
use std::collections::HashMap;
use rayon::prelude::*;
mod types;
use types::*;
@ -113,14 +115,12 @@ fn get_sleepy_minute(shifts: &Vec<Shift>) -> (i32, i32) {
}
fn main() {
let lines = include_str!("../input_big").trim().lines();
let lines: Vec<&str> = include_str!("../input_big").trim().lines().collect();
let mut events: Vec<Event> = Vec::new();
for line in lines {
events.push(event_from_line(line.to_string()));
}
let mut events: Vec<Event> = lines.par_iter().map(|line| event_from_line(line.to_string())).collect();
events.sort();
events.par_sort_unstable();
//events.sort();
let shifts = events_to_shifts(events);
let shifts_by_guard = group_shifts_by_guard(shifts);