parent
f9115a9e40
commit
4415dd26ae
@ -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;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user