From 46ffe4f99ab679d179b9c8bc94338bd4b7bbb9a6 Mon Sep 17 00:00:00 2001 From: Spencer Brower Date: Wed, 17 Jun 2026 11:48:05 -0400 Subject: [PATCH] fix(find): Ignored volatile dirs in benchmarks. --- PERFORMANCE_IDEAS.md | 5 +++++ bench.sh | 32 ++++++++++++++++---------------- 2 files changed, 21 insertions(+), 16 deletions(-) create mode 100644 PERFORMANCE_IDEAS.md diff --git a/PERFORMANCE_IDEAS.md b/PERFORMANCE_IDEAS.md new file mode 100644 index 0000000..f943484 --- /dev/null +++ b/PERFORMANCE_IDEAS.md @@ -0,0 +1,5 @@ +findr is 4.5x slower than fd (case 1: 658ms vs 146ms). Opportunities: +- Per-thread result buffers (eliminate mutex contention) +- Arena allocator for path strings +- Larger getdents buffer (8KB → 64KB+) +- Buffered stdout output diff --git a/bench.sh b/bench.sh index a236838..179ab2e 100755 --- a/bench.sh +++ b/bench.sh @@ -38,17 +38,17 @@ echo # --- file counts --- echo "=== File counts ===" -printf " fd -a . : %8d\n" "$(fd -a . "$TARGET" 2>/dev/null | wc -l)" -printf " findr : %8d\n" "$("$FINDR" "$TARGET" 2>/dev/null | wc -l)" +printf " fd -a -E .jj . : %8d\n" "$(fd -a -E .jj . "$TARGET" 2>/dev/null | wc -l)" +printf " findr -E .jj : %8d\n" "$("$FINDR" -E .jj "$TARGET" 2>/dev/null | wc -l)" echo -printf " fd -a -E .git -H . : %8d\n" "$(fd -a -E .git -H . "$TARGET" 2>/dev/null | wc -l)" -printf " findr -E .git -H : %8d\n" "$("$FINDR" -E .git -H "$TARGET" 2>/dev/null | wc -l)" +printf " fd -a -E .git -E .jj -H . : %8d\n" "$(fd -a -E .git -E .jj -H . "$TARGET" 2>/dev/null | wc -l)" +printf " findr -E .git -E .jj -H : %8d\n" "$("$FINDR" -E .git -E .jj -H "$TARGET" 2>/dev/null | wc -l)" echo -printf " fd -a -E .git -HI . : %8d\n" "$(fd -a -E .git -HI . "$TARGET" 2>/dev/null | wc -l)" -printf " findr -E .git -HI : %8d\n" "$("$FINDR" -E .git -HI "$TARGET" 2>/dev/null | wc -l)" +printf " fd -a -E .git -E .jj -HI . : %8d\n" "$(fd -a -E .git -E .jj -HI . "$TARGET" 2>/dev/null | wc -l)" +printf " findr -E .git -E .jj -HI : %8d\n" "$("$FINDR" -E .git -E .jj -HI "$TARGET" 2>/dev/null | wc -l)" echo -printf " fd -a -E .git . : %8d\n" "$(fd -a -E .git . "$TARGET" 2>/dev/null | wc -l)" -printf " findr -E .git : %8d\n" "$("$FINDR" -E .git "$TARGET" 2>/dev/null | wc -l)" +printf " fd -a -E .git -E .jj . : %8d\n" "$(fd -a -E .git -E .jj . "$TARGET" 2>/dev/null | wc -l)" +printf " findr -E .git -E .jj : %8d\n" "$("$FINDR" -E .git -E .jj "$TARGET" 2>/dev/null | wc -l)" echo # --- benchmarks --- @@ -58,14 +58,14 @@ hyperfine \ --warmup 2 \ --runs 5 \ --export-markdown "$RESULTS_FILE" \ - "fd -a . \"$TARGET\" > /dev/null" \ - "$FINDR \"$TARGET\" > /dev/null" \ - "fd -a -E .git -H . \"$TARGET\" > /dev/null" \ - "$FINDR -E .git -H \"$TARGET\" > /dev/null" \ - "fd -a -E .git -HI . \"$TARGET\" > /dev/null" \ - "$FINDR -E .git -HI \"$TARGET\" > /dev/null" \ - "fd -a -E .git . \"$TARGET\" > /dev/null" \ - "$FINDR -E .git \"$TARGET\" > /dev/null" + "fd -a -E .jj . \"$TARGET\" > /dev/null" \ + "$FINDR -E .jj \"$TARGET\" > /dev/null" \ + "fd -a -E .git -E .jj -H . \"$TARGET\" > /dev/null" \ + "$FINDR -E .git -E .jj -H \"$TARGET\" > /dev/null" \ + "fd -a -E .git -E .jj -HI . \"$TARGET\" > /dev/null" \ + "$FINDR -E .git -E .jj -HI \"$TARGET\" > /dev/null" \ + "fd -a -E .git -E .jj . \"$TARGET\" > /dev/null" \ + "$FINDR -E .git -E .jj \"$TARGET\" > /dev/null" echo echo "=== Results written to $RESULTS_FILE ==="