CheckOps
hyperfine
hyperfine is an Apache-2.0 command-line benchmarking tool that runs shell commands repeatedly with warm-up, statistical analysis and exports, ideal for comparing CLIs and builds.
Latest public signals
Not refreshed yet. Refresh reads the public site and, when the entry has a GitHub repository, the latest release.
Introduction
hyperfine is a command-line benchmarking tool by David Peter (sharkdp). The repository is licensed Apache-2.0 (the project is dual-licensed with MIT according to its README) and has about 29,000 GitHub stars.
It benchmarks arbitrary shell commands: you give it one or more commands, it runs each many times, and it reports mean, standard deviation, range and relative speed. Warm-up runs and cache-clearing commands make results more trustworthy.
That makes it a simple, reliable way to check whether a build step, compiler flag, CLI release or script change made something faster or slower.
In the quality loop, hyperfine is the quick evidence tool. Before you merge a change that claims to speed up a build, a CLI command or a test suite, a hyperfine comparison gives reviewers numbers with a spread instead of a single stopwatch reading. Its JSON output also makes it easy to store results from scheduled runs and plot them over time.
Features
- Statistical analysis: Multiple runs with mean, standard deviation, min and max.
- Any shell command: Benchmark CLIs, scripts and build steps.
- Warm-up runs:
--warmupruns commands before measuring. - Prepare and cleanup:
--prepareruns a command (for example clearing caches) before each timing run. - Parameter scans: Benchmark across a parameter range, such as thread counts.
- Comparisons: Relative speed between commands in one summary.
- Exports: CSV, JSON, Markdown and AsciiDoc exports for reports and CI.
- Progress feedback: Live progress and estimates while benchmarks run.
Pros
- Extremely simple: One command to compare alternatives.
- Statistically sound: Repeated runs and outlier warnings.
- CI friendly: JSON export makes trend tracking easy.
- Cross-platform: Linux, macOS and Windows.
- Popular and maintained: Commits in November 2026.
Cons
- Process-level only: It measures whole command runs, not functions inside them.
- Startup overhead: Very short commands are dominated by process start time.
- Noisy environments: Background load affects results.
- No load generation: Not for concurrent traffic or HTTP load.
- Manual thresholds: Gating CI on results requires your own script.
Usage and Links (Example)
Compare two commands with warm-up:
hyperfine --warmup 3 'fd -e jpg' 'find . -iname "*.jpg"'
Export results for CI:
hyperfine --export-json bench.json 'make build'
More patterns from the README:
# Clear caches before every timing run
hyperfine --prepare 'sync; echo 3 | sudo tee /proc/sys/vm/drop_caches' 'grep -R TODO .'
# Scan a parameter
hyperfine --parameter-scan threads 1 8 'make -j {threads}'
# Markdown table for a pull request
hyperfine --export-markdown results.md 'old-tool input' 'new-tool input'
Tips: run on a quiet machine, use enough runs for stable statistics, and watch for hyperfine’s warnings about outliers or very short command times. For CI gates, parse the JSON export and compare the mean against a stored baseline with a tolerance.
Resources:
Pricing
hyperfine is free and open source.
Recommended for?
- CLI and tooling authors comparing releases.
- Build engineers measuring build and test step times.
- Anyone needing quick, statistically sound timings of commands.
- Not a fit for HTTP load or in-process micro-benchmarks.
Conclusion
hyperfine is the simplest trustworthy way to benchmark shell commands, with warm-up, statistics and exports.
Pair it with micro-benchmark harnesses for code-level work and load tools for services.
Alternatives
Other tools on CheckOps that cover similar ground. Open a page, or compare one with hyperfine side by side.
BBenchmarkDotNetBenchmarkDotNet is the MIT-licensed .NET library for turning methods into reliable, reproducible micro-benchmarks with statistical analysis, diagnosers and exportable reports.Compare with hyperfine
JJMHJMH (Java Microbenchmark Harness) is OpenJDK's GPL-2.0 harness for building, running and analysing nano, micro, milli and macro benchmarks in Java and other JVM languages.Compare with hyperfine
Hheyhey is a tiny Apache-2.0 HTTP load generator written in Go, originally called boom, used as a simple replacement for ApacheBench (ab).Compare with hyperfine
Oohaoha is an MIT-licensed Rust HTTP load generator inspired by hey, with a real-time terminal UI showing progress, latency and status codes as the test runs.Compare with hyperfine
AApache BenchmarkA command-line tool for measuring the performance of HTTP web servers, useful for testing the performance of your Apache installations.Compare with hyperfine
FFortioFortio is an Apache-2.0 Go load-testing library, CLI, echo server and web UI that runs at a fixed QPS and records latency histograms and percentiles; it began as Istio's load tester.Compare with hyperfine