From f2232a434207af16feab29a887b084f43d975376 Mon Sep 17 00:00:00 2001 From: Brian Hicks Date: Thu, 26 Aug 2021 11:02:29 -0500 Subject: [PATCH] par_iter to go even faster! --- BENCHMARKING.md | 20 ++++++++++++++++++++ src/main.rs | 4 ++-- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/BENCHMARKING.md b/BENCHMARKING.md index 597d75d..6a002c4 100644 --- a/BENCHMARKING.md +++ b/BENCHMARKING.md @@ -213,3 +213,23 @@ Summary './result/bin/similar-sort define < /usr/share/dict/words' ran 3.07 ± 0.08 times faster than './go-result/bin/similar-sort benchmark < /usr/share/dict/words' ``` + +## Coda II + +Well, turns out I forgot to have the program calculate the edit distance in parallel. +It's even faster now! + +``` +$ hyperfine -L impl iter,par_iter './{impl}/bin/similar-sort benchmark < /usr/share/dict/words' +Benchmark #1: ./iter/bin/similar-sort benchmark < /usr/share/dict/words + Time (mean ± σ): 118.6 ms ± 2.2 ms [User: 102.4 ms, System: 15.7 ms] + Range (min … max): 113.9 ms … 123.3 ms 24 runs + +Benchmark #2: ./par_iter/bin/similar-sort benchmark < /usr/share/dict/words + Time (mean ± σ): 91.7 ms ± 2.1 ms [User: 247.9 ms, System: 113.5 ms] + Range (min … max): 88.3 ms … 95.6 ms 31 runs + +Summary + './par_iter/bin/similar-sort benchmark < /usr/share/dict/words' ran + 1.29 ± 0.04 times faster than './iter/bin/similar-sort benchmark < /usr/share/dict/words' +``` diff --git a/src/main.rs b/src/main.rs index ee46750..2b68d27 100644 --- a/src/main.rs +++ b/src/main.rs @@ -64,7 +64,7 @@ fn try_main() -> Result<()> { if matches.is_present("jaro-winkler") { let mut distances: Vec<(f64, &String)> = lines - .iter() + .par_iter() .map(|candidate| (jaro_winkler(target, candidate), candidate)) .collect(); @@ -88,7 +88,7 @@ fn try_main() -> Result<()> { } else { // levenshtein, the default let mut distances: Vec<(usize, &String)> = lines - .iter() + .par_iter() .map(|candidate| (levenshtein(target, candidate), candidate)) .collect();