diff --git a/jest_rust/src/main.rs b/jest_rust/src/main.rs index 9adf148..1e0609e 100644 --- a/jest_rust/src/main.rs +++ b/jest_rust/src/main.rs @@ -51,12 +51,7 @@ static FORBIDDEN_WORDS: LazyLock<Trie> = LazyLock::new(|| { }); impl Stats { - pub fn process(&mut self, file: &str) { - let Ok(text) = fs::read_to_string(&file) else { - self.failed_file_count += 1; - return; - }; - self.file_count += 1; + pub fn process(&mut self, text: &str) { // self.muncher(&text); self.for_loops(&text); } @@ -166,20 +161,25 @@ impl Stats { #[tokio::main] async fn main() { let files = env::args().skip(1); - + let mut stats = Stats::default(); let mut rx = { let (tx, rx) = mpsc::unbounded_channel(); for file in files { + //reading files not sequentially average shaves 30ms (of 1250ms), and that's on a NVMe SSD so why not + let Ok(text) = fs::read_to_string(&file) else { + stats.failed_file_count += 1; + continue; + }; + stats.file_count += 1; let tx = tx.clone(); tokio::spawn(async move { let mut stats = Stats::default(); - stats.process(&file); + stats.process(&text); tx.send(stats).unwrap(); }); } rx }; - let mut stats = Stats::default(); while let Some(file_stat) = rx.recv().await { stats += file_stat; }