We believe in transparency. Benchmarks are often biased, so we provide the exact methodology and scripts used to produce these numbers. You can run them yourself using the code in the benchmarks/ directory of this repository.
| Metric | Zetten | Just | Make | PoeThePoet |
|---|---|---|---|---|
| Startup Time | 2.08 ms | 2.15 ms | 3.85 ms | 41.88 ms |
| No-Op (Cached) | 3.49 ms | 4.26 ms | 5.63 ms | 64.68 ms |
| Cold Build | 60 ms* | 4 ms | 6 ms | 66 ms |
| Binary Size | 2.9 MB | 3.6 MB | 0.1 MB | N/A (Python) |
| Peak Memory | ~9 MB | ~9 MB | ~9 MB | ~27 MB |
> Note on Cold Build: Zetten performs content-hashing on all input files even during a cold build to populate the cache. Tools like make and just do not check content hashes by default, explaining their speed advantage in this specific "blind run" scenario.
Our benchmarks are automated using hyperfine, a command-line benchmarking tool.
- Hardware: Apple Silicon (M1 Pro) / Ubuntu Latest (CI)
- Tool Versions: Latest stable releases as of Feb 2026.
- Python: 3.10+
- Hyperfine: For statistical precision (warmup runs, outlier detection).
- Time: For measuring peak memory (RSS).
- wc/du: For binary size analysis.
Measures the overhead of the CLI itself.
- Command:
tool --version - Why it matters: Developer experience. Laggy CLIs break flow state.
Measures the time to determine "nothing needs to be done".
- Command:
tool run build(where sources are unchanged) - Why it matters: 90% of developer builds are incremental. Zetten uses content hashing; others often use file modification timestamps (mtime).
Measures a fresh build from scratch.
- Command:
tool run build(afterclean) - Why it matters: CI/CD pipelines often start fresh.
Clone the repository and run the included runner:
# 1. Install dependencies
pip install hyperfine
# 2. Run the benchmark suite
python3 benchmarks/runner.py --scenario all