You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
perf: Replace gix-index + filesystem walk with parallel git subprocesses
Build RepoGitIndex from three parallel git subprocesses instead of
gix-index stat + ignore-crate walk:
- git ls-tree -r HEAD -z (blob OIDs, ~60ms)
- git diff-index HEAD -z (modified/deleted, ~95-150ms)
- git ls-files --others -z (untracked, ~230-530ms)
The three run on separate threads and complete in max(ls-files) time.
Git's internal implementations are optimized for large repos —
ls-tree reads from packfiles without stat, diff-index only stats
files that differ, and ls-files uses the index for efficient
untracked detection.
Benchmark (110-package monorepo, 30 runs, sandboxed Linux):
baseline: 878ms ± 27ms
improved: 437ms ± 7ms (2.01x faster)
On macOS (APFS), git ls-files --others is slower (~530ms vs ~230ms
on Linux ext4), so the improvement is smaller. The approach is never
slower than the previous implementation.
0 commit comments