在日常的开发和运维工作中,你是否曾需要比较两个命令或脚本的执行效率?比如,想知道 find 和 fd 哪个查找文件更快,或者优化构建脚本时想量化不同参数带来的性能差异。单纯依赖 time 命令单次运行的结果往往不够精确,容易受到系统波动和缓存状态的影响。
今天,我们来认识一款在 GitHub 上广受好评的命令行基准测试利器 —— Hyperfine。这个用 Rust 编写的工具,能够自动进行多次测试和统计分析,让性能对比变得简单、科学且可靠。
项目简介
Hyperfine 是一个命令行基准测试工具,其核心功能是精确测量和比较 Shell 命令的执行时间。它会自动进行多次运行,计算平均值、标准差等统计信息,并生成清晰的对比报告。它不仅适合开发者用于程序性能评估,也能轻松集成到自动化测试或 CI/CD 流程中。
更重要的是,Hyperfine 具有出色的跨平台兼容性,完美支持 Windows、macOS 和 Linux 三大主流操作系统。

该工具在 GitHub 上已斩获超过 27.4k 星标,是命令行性能测试领域的明星项目。
功能体验:Windows 平台实测
让我们通过几个具体例子,在 Windows 系统上直观感受 Hyperfine 的威力。
示例一:测量单个命令的执行时间
从一个最基础的命令开始,测试 dir 的执行耗时:
hyperfine "dir"
命令执行后,终端输出示例如下:

从结果中,我们可以清晰地看到:
- Hyperfine 自动执行了
dir 命令 193 次。
- 统计出了平均耗时(2.7 ms)及其标准差(± 0.9 ms)。
- 给出了最快(0.4 ms)和最慢(7.6 ms)的执行时间区间。
这种基于多次运行的统计方法,远比手动单次计时要科学和稳定。
示例二:对比两个命令的性能
命令对比是 Hyperfine 的强项。例如,我们可以对比 dir 和 echo. 这两个命令:
hyperfine "dir" "echo."
输出示例如下:

Hyperfine 不仅分别给出了两个命令的详细统计数据,还在最后的 Summary 部分直接给出了结论:“echo. ran 1.91 ± 22.54 times faster than dir”。哪条命令更快、快多少倍,一目了然。
示例三:评估程序启动开销
有时我们关心的不是命令本身的逻辑,而是程序启动的耗时,比如启动一个子 Shell (cmd) 或调用系统工具 (ping):
hyperfine "cmd /c exit" "ping /?" "ver"
输出示例如下:

这种方式非常适合用于:
- 对比不同命令行程序或解释器的启动速度。
- 评估脚本中频繁调用外部命令所带来的性能开销。
核心功能特性
- 统计分析:自动多次运行命令,提供平均值、标准差、最小值、最大值及中位数等统计信息,有效减少偶发性噪音干扰。
- 进度反馈:实时显示每个命令的测试进度、预计完成时间(ETA)。
- 预热与准备:支持
--warmup 进行预热运行,填充文件系统缓存;支持 --prepare 在每次测试前执行准备命令(如清空缓存),模拟“冷启动”状态。
- 丰富的结果导出:可将测试结果导出为 CSV、JSON、Markdown、AsciiDoc 等多种格式,便于存档或进一步分析。
- 参数化测试:通过
--parameter-scan 一次性对一系列参数组合运行基准测试,非常适合评估不同参数对性能的影响。

安装与快速上手
Hyperfine 的安装方式非常灵活,各平台均有便捷的安装渠道。
macOS (Homebrew):
brew install hyperfine
Ubuntu/Debian (apt):
sudo apt install hyperfine
Windows (推荐使用包管理器):
# 使用 Chocolatey
choco install hyperfine
# 使用 Scoop
scoop install hyperfine
# 使用 Winget
winget install hyperfine
通过 Rust 的 Cargo 安装 (适用于所有平台):
cargo install hyperfine
你也可以直接从项目的 GitHub Releases 页面下载对应平台的最新预编译二进制文件。

安装完成后,可以通过以下命令验证安装是否成功:
hyperfine --version

常用命令示例
基础对比:
# 比较两个命令
hyperfine "ls" "ls -l"
# 比较多个命令
hyperfine "find . -name '*.txt'" "fd '.*\.txt$'"
预热与多次运行:
# 先预热5次,再进行10次正式基准测试
hyperfine --warmup 5 --runs 10 "command1" "command2"
模拟冷缓存测试 (Linux):
# 每次测试前都清空页缓存、目录项和inode缓存
hyperfine --prepare 'sync; echo 3 | sudo tee /proc/sys/vm/drop_caches' "grep -r 'pattern' ."
参数化测试:
# 测试不同线程数 (1到8) 对编译性能的影响
hyperfine --prepare 'make clean' --parameter-scan num_threads 1 8 'make -j {num_threads}'
# 测试不同的 sleep 时长
hyperfine --parameter-scan delay 0.1 0.5 -D 0.1 'sleep {delay}'
导出测试结果:
# 导出为 Markdown 格式
hyperfine "command1" "command2" --export-markdown results.md
# 导出为 JSON 格式
hyperfine "command1" "command2" --export-json results.json
总结
总而言之,Hyperfine 作为一款开源命令行基准测试工具,以其精准的统计分析、灵活的测试配置、丰富的导出格式和强大的跨平台能力,有效地解决了传统计时工具功能单一、结果不准确、使用繁琐的痛点。
无论是开发人员需要优化脚本性能,运维工程师想要对比不同命令或配置的效率,还是研究者希望量化参数对程序运行的影响,Hyperfine 都能提供高效且可靠的数据支持。它的设计哲学体现了 Unix “做好一件事”的精神,并且做得非常出色。
如果你对性能优化和工具效率提升感兴趣,不妨尝试将 Hyperfine 纳入你的工具箱。更多高级功能和详细文档,可以访问其 GitHub 项目主页 进行探索。也欢迎你来到 云栈社区 分享你的使用心得,或发现更多类似的效率工具。