Benchmarks run on macOS with ~90 git repositories, using hyperfine with minimum 3-5 runs per configuration.
- macOS (Darwin 24.6.0)
- 20 CPU cores
- SSH multiplexing enabled (ControlMaster)
- Rust implementation (
rust)
script/bench compare also benchmarks bin/git-all-gnu-parallel, a shell baseline that discovers the same depth-1 repos and runs one git -C <repo> command per repository through GNU Parallel. It is intended as a simple comparison point for orchestration overhead, not as a feature-complete implementation.
Local filesystem operation - bottleneck is process spawning and filesystem I/O.
| Workers | Time | Notes |
|---|---|---|
| 1 | 2.18s | |
| 2 | 1.27s | |
| 4 | 0.85s | Optimal |
| 8 | 0.98s | Contention starts |
| 12 | 1.17s | |
| 16 | 1.80s | |
| 20 (auto) | 1.62s |
Finding: 4 workers is optimal for local operations. More parallelism causes filesystem/process contention.
Network-bound operation - bottleneck is SSH connection and remote server.
| Workers | Time | Notes |
|---|---|---|
| 1 | 26.5s | |
| 2 | 15.1s | |
| 4 | 8.4s | |
| 8 | 5.5s | Optimal |
Finding: 8 workers is optimal for network operations. More parallelism hides network latency.
Similar to pull - network-bound.
| Workers | Time | Notes |
|---|---|---|
| 1 | 25.0s | |
| 4 | 8.2s | |
| 8 | 5.3s | Optimal |
Without SSH multiplexing, git pull with 4 workers took ~25s. With multiplexing enabled, it dropped to ~8s - a 3x improvement.
See README.md for SSH multiplexing configuration.
Default worker count: 8
This provides the best balance:
- Near-optimal for network operations (pull, fetch)
- Acceptable for local operations (status is ~1s vs 0.85s optimal)
The crossterm renderer is only exercised when stdout is a TTY. Use script/bench git --tty
to wrap benchmarked commands in a pseudo-terminal:
script/bench git -I rust -b main -t crossterm-smart-tty -d ~/work -c status -n 8 --tty
script/bench git -I rust -b main -t crossterm-smart-tty -d ~/work -c pull -n 8 --tty
script/bench git -I rust -b main -t crossterm-smart-tty -d ~/src/oss -c status -n 8 --tty
script/bench git -I rust -b main -t crossterm-smart-tty -d ~/src/oss -c pull -n 8 --ttyRun the same matrix without --tty to verify non-TTY behavior remains stable.
Validation run on April 23, 2026 with script/bench git -I rust -b main -t HEAD -n 8.
Benchmarks used -w 1 -m 3 unless noted otherwise.
~/work status:main3.157s vscurrent3.169s, effectively neutral.~/work pull: rerun with-w 2 -m 5due to an earlier noisy sample;main7.272s vscurrent7.478s, current about 3% slower.~/src/oss status:main4.392s vscurrent4.334s, current about 1% faster.~/src/oss pull:main2.851s vscurrent3.034s, current about 6% slower.
~/work status:main3.459s vscurrent3.453s, effectively neutral.~/work pull:main7.366s vscurrent7.650s, current about 4% slower.~/src/oss status:main4.688s vscurrent4.694s, effectively neutral.~/src/oss pull:main3.446s vscurrent3.190s, current about 7% faster, though the baseline side had high variance.
~/work status:tmuxlive/final capture reviewed. Live pane showedrunningrows with no header row, and the final table remained on screen.~/src/oss status:tmuxlive/final capture reviewed. Live pane showedrunningrows with no header row, and the final table remained on screen.~/work pull:tmuxlive/final capture reviewed. Final table kept inline pull errors in the output column and remained on screen.~/src/oss pull:tmuxlive/final capture reviewed. Final table kept inline tracking-info errors in the output column and remained on screen.
status ~/work:repos=100 first_exit_ms=158 first_print_ms=515 delayed_repos=94 max_ordered_wait_ms=1534 total_ms=3447