Home

Awesome

hyperfine translate-svg

「 命令行基准测试工具 」

中文 | english


校对 ✅

<!-- doc-templite START generated --> <!-- repo = 'sharkdp/hyperfine' --> <!-- commit = '094b76d23a74341de2e03e34eb15285895517b2b' --> <!-- time = '2018 9.28' -->
翻译的原文与日期最新更新更多
commit⏰ 2018 9.28last中文翻译
<!-- doc-templite END generated -->

贡献

欢迎 👏 勘误/校对/更新贡献 😊 具体贡献请看

生活

If help, buy me coffee —— 营养跟不上了,给我来瓶营养快线吧! 💰


目录

<!-- START doctoc generated TOC please keep comment here to allow auto update --> <!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE --> <!-- END doctoc generated TOC please keep comment here to allow auto update -->

hyperfine

Build Status Build status Version info

命令行基准测试工具 (灵感来自bench) .

演示: fdfind 的 基准测试:

hyperfine

特征

用法

基本基准测试

要运行基准测试,您只需调用即可hyperfine <command>.... 参数可以是任何shell命令. 例如:

hyperfine 'sleep 0.3'

Hyperfine将自动确定要为每个命令执行的运行次数. 默认情况下,它将执行至少10个基准测试运行. 要更改此设置,您可以使用-m/--min-runs选项:

hyperfine --min-runs 5 'sleep 0.2' 'sleep 3.2'

注重 I/O 的程序

如果程序执行时间受磁盘 I/O 限制,则基准测试结果可能会受到冷还是热的磁盘缓存严重影响.

如果要在热缓存上运行基准测试,在实际基准测试之前可以使用-w/--warmup,执行一定数量的程序执行的选项(预热预热):

hyperfine --warmup 3 'grep -R TODO *'

相反,如果要运行冷缓存的基准测试,可以使用这个-p/--prepare选项, 在每次计时运行之前,运行特定命令. 例如,要清除Linux上的硬盘缓存,可以运行

sync; echo 3 | sudo tee /proc/sys/vm/drop_caches

要在 Hyperfine 中使用此特定命令,请sudo -v暂时获得sudo权限,然后调用:

hyperfine --prepare 'sync; echo 3 | sudo tee /proc/sys/vm/drop_caches' 'grep -R TODO *'

参数化基准

如果你想在一个参数变化的情况下运行基准测试 (比如线程数) ,你可以使用-P/--parameter-scan选项:

hyperfine --prepare 'make clean' --parameter-scan num_threads 1 12 'make -j {num_threads}'

导出结果

Hyperfine有多种导出基准测试结果的选项: CSV,JSON,Markdown (参见--help文字详情)。 例如,要将结果导出到Markdown,您可以使用--export-markdown,那将创建这样的表格:

CommandMean [ms]Min…Max [ms]
find . -iregex '.*[0-9]\.jpg$'506.0 ± 8.1495.4…518.6
find . -iname '*[0-9].jpg'304.9 ± 3.1299.8…309.3
fd -HI '.*[0-9]\.jpg$'66.2 ± 5.862.5…86.3

安装

macOS

Hyperfine可以通过brew安装:

brew install hyperfine

Ubuntu

下载相应的.deb包,在releases页面并通过dpkg安装它:

wget https://github.com/sharkdp/hyperfine/releases/download/v1.3.0/hyperfine_1.3.0_amd64.deb
sudo dpkg -i hyperfine_1.3.0_amd64.deb

Arch Linux

在Arch Linux,可以通过AUR安装hyperfine:

yaourt -S hyperfine

Void Linux

Hyperfine可以通过xbps安装:

xbps-install -S hyperfine

Cargo (Linux,macOS,Windows)

Hyperfine可以通过cargo安装:

cargo install hyperfine

确保使用Rust 1.24或更高版本.

二进制文件 (Linux,macOS,Windows)

releases页面中下载相应的打包文件.

名称的由来

名字hyperfine是根据 铯133 的 hyperfine 能级选择的,铯133的这一能级的频率定义了我们的基本时间单位-1秒钟

译:(课外知识)李永乐老师, 一秒究竟有多长 youtube | bilibili