Ep 8: Performance Benchmarks — Comparing 6 Terminals
Uniform hardware, uniform tests. A four-dimensional comparison across pure output throughput, Agent load handling, memory usage, and startup speed.
Methodology
Principle: Same machine, same shell, same test scripts. The only variable is the terminal itself.
flowchart TB
subgraph Test Environment
HW[MacBook Pro M3 Pro
36GB RAM
macOS 15.x]
SH[zsh 5.9
Unified .zshrc]
end
subgraph Test Subjects
T1[Ghostty]
T2[cmux]
T3[iTerm2]
T4[Warp]
T5[Terminal.app]
T6[tmux inside Ghostty]
end
subgraph Test Scenarios
S1[Scenario 1: Pure Output Throughput]
S2[Scenario 2: Mixed Output Scrolling]
S3[Scenario 3: Real-world Agent Load]
S4[Scenario 4: Resource Usage]
end
HW --> T1 & T2 & T3 & T4 & T5 & T6
SH --> T1 & T2 & T3 & T4 & T5 & T6
T1 & T2 & T3 & T4 & T5 & T6 --> S1 & S2 & S3 & S4Test Scenarios
Scenario 1: Pure Output Throughput — cat large file
# Generate a 10,000 line test file
seq 1 10000 > /tmp/test-output.txt
# Measurement: Time from starting cat until rendering is complete
time cat /tmp/test-output.txt
Scenario 2: Mixed Output + High-speed Scrolling — find full disk search
# Measurement: Fluidity during high-speed scrolling of many file paths
time find /usr -name "*.dylib" 2>/dev/null
Scenario 3: Real-world Agent Load — Claude Code executing a large Phase
# Start Claude Code and execute an operation that generates massive output
claude
# Input: /gsd-execute-phase 1
# Observation: Fluidity of output, lag presence, and scroll smoothness
Scenario 4: Multi-tasking Resource Usage
# Open 10 tabs/sessions, each running 'sleep 9999'
# Measurement: Total memory consumption
Test Results
Based on community benchmarks (VibeHackers, Mitchell Hashimoto benchmark, HN community):
Rendering Speed:
| Scenario | Ghostty | cmux | iTerm2 | Warp | Terminal.app | tmux (nested) |
|---|---|---|---|---|---|---|
| cat 10,000 lines | ★★★ | ★★★ | ★★ | ★★ | ★ | ★★ |
| find mixed output | ★★★ | ★★★ | ★★ | ★★ | ★ | ★★ |
| Real-world Agent load | ★★★ | ★★★ | ★★ | ★ | ★ | ★★ |
★★★ = Fluid/No lag | ★★ = Slight delay | ★ = Noticeable lag
Key Data Points:
- Ghostty vs. iTerm2: Approx. 3x speed difference (VibeHackers benchmark).
- Ghostty vs. Warp: Approx. 2.5x speed difference.
- Ghostty ≈ cmux: cmux uses the Ghostty rendering engine.
Resource Usage:
| Metric | Ghostty | cmux | iTerm2 | Warp | Terminal.app | tmux |
|---|---|---|---|---|---|---|
| Single Window RAM | ~80MB | ~100MB | ~150MB | ~200MB | ~50MB | ~5MB/session |
| 10 Tabs Total RAM | ~300MB | ~400MB | ~500MB | ~800MB | ~200MB | ~50MB |
| Startup Speed | Instant | Instant | ~0.5s | ~1s | Instant | Instant |
Attention Management (Efficiency metric for parallel Agents):
| Metric | cmux | tmux | Ghostty | iTerm2 | Warp |
|---|---|---|---|---|---|
| Agent Status Alerts | Ring + Desktop | Status bar (custom) | None | None | Partial (AI) |
| Check 10 Agents (Time) | ~10s (alerts) | ~30s (manual) | ~60s (manual) | ~45s (tabs) | ~45s |
| Probability of Miss | Low (Auto-alert) | Med (Habit-based) | High (Manual) | High | Med |
Conclusion
Pure Speed → Ghostty ≈ cmux > iTerm2 ≈ Warp > Terminal.app
Multi-Agent Mgmt → cmux > tmux > Warp > iTerm2 > Ghostty > Terminal.app
Remote Persistence → tmux > Others (The only one with detach/attach)
AI Integration → Warp > Others (The only one with built-in AI)
Resource Usage → tmux > Terminal.app > Ghostty > cmux > iTerm2 > Warp
There is no single "fastest" terminal; there is only the "most suitable" terminal for your specific scenario.