diff options
Diffstat (limited to 'bench/src')
| -rw-r--r-- | bench/src/main.rs | 76 |
1 files changed, 0 insertions, 76 deletions
diff --git a/bench/src/main.rs b/bench/src/main.rs deleted file mode 100644 index bc77b03d..00000000 --- a/bench/src/main.rs +++ /dev/null @@ -1,76 +0,0 @@ -use std::hint::black_box; -use std::path::PathBuf; -use std::process::Command; - -use brunch::{Bench, Benches}; -use fuzzy_matcher::FuzzyMatcher; -use nucleo::{Utf32Str, Utf32String}; - -fn bench_dir() -> PathBuf { - std::env::var_os("BENCHMARK_DIR") - .expect("the BENCHMARK_DIR must be set to the directory to traverse for the benchmark") - .into() -} - -fn checkout_linux_if_needed() { - let linux_dir = bench_dir(); - if !linux_dir.exists() { - println!("will git clone linux..."); - let output = Command::new("git") - .arg("clone") - .arg("https://github.com/BurntSushi/linux.git") - .arg("--depth") - .arg("1") - .arg("--branch") - .arg("master") - .arg("--single-branch") - .arg(&linux_dir) - .stdout(std::process::Stdio::inherit()) - .status() - .expect("failed to git clone linux"); - println!("did git clone linux...{:?}", output); - } -} - -fn main() { - checkout_linux_if_needed(); - let dir = bench_dir(); - let paths: (Vec<Utf32String>, Vec<String>) = walkdir::WalkDir::new(dir) - .into_iter() - .filter_map(|path| { - let dent = path.ok()?; - let path = dent.into_path().to_string_lossy().into_owned(); - Some((path.as_str().into(), path)) - }) - .unzip(); - let mut nucleo = nucleo::Matcher::new(nucleo::Config::DEFAULT.match_paths()); - let skim = fuzzy_matcher::skim::SkimMatcherV2::default(); - - // TODO: unicode? - let needles = ["never_matches", "copying", "/doc/kernel", "//.h"]; - // Announce that we've started. - ::std::eprint!("\x1b[1;38;5;199mStarting:\x1b[0m Running benchmark(s). Stand by!\n\n"); - let mut benches = Benches::default(); - // let mut scores = Vec::with_capacity(paths.0.len()); - for needle in needles { - println!("running {needle:?}..."); - benches.push(Bench::new(format!("nucleo {needle:?}")).run(|| { - // scores.clear(); - // scores.extend(paths.0.iter().filter_map(|haystack| { - for haystack in &paths.0 { - black_box( - nucleo.fuzzy_match(haystack.slice(..), Utf32Str::Ascii(needle.as_bytes())), - ); - } - // })); - // scores.sort_unstable(); - })); - benches.push(Bench::new(format!("skim {needle:?}")).run(|| { - for haystack in &paths.1 { - let res = skim.fuzzy_match(haystack, needle); - let _ = black_box(res); - } - })); - } - benches.finish(); -} |
