8 个版本 (5 个破坏性版本)
0.5.0 | 2022年6月20日 |
---|---|
0.4.0 | 2022年6月10日 |
0.3.1 | 2022年5月16日 |
0.2.0 | 2022年4月30日 |
0.0.2 | 2022年4月23日 |
#171 in 性能分析
每月下载量:31
72KB
2K SLoC
什么是 benchie?
benchie 是一个简单易用的 CLI 工具,可对您的进程进行性能基准测试并为您整理基准测试结果。
安装
benchie 作为单个可执行文件提供,没有依赖。您可以使用下面的安装程序进行安装,或者从发布页面下载发布二进制文件。
Shell (Mac, Linux)
curl -fsSL https://raw.githubusercontent.com/benchie-io/benchie/main/scripts/install.sh | sh
PowerShell (Windows)
iwr https://raw.githubusercontent.com/benchie-io/benchie/main/scripts/install.ps1 -useb | iex
从源代码构建
benchie 可在所有主要平台上构建和测试。首先从 https://rustup.rs 安装 Rust 并将其添加到您的路径。
通过 Cargo 安装
使用 Rust 的内置包管理器安装 benchie 的最新版本
$ cargo install benchie --locked
通过 Github 安装
- 克隆此仓库
- 通过编译 benchie 测试您的工具链设置
$ cargo build --locked
- 运行测试
$ cargo test --locked
使用方法
基准测试
为了基准测试(测量运行时间,类似于 Unix 工具 time
)一个进程,按照以下方式调用 benchie
$ benchie [OPTIONS] <COMMAND>
其中 <COMMAND>
可以是任何命令,包括命令行参数。benchie 还将存储一些元信息到基准测试中,例如提交信息、时间戳、可执行文件的退出状态等。此外,还可以向基准测试过程传递各种选项。
标签
标签有助于识别基准测试结果。可以使用 --tag key=value
选项作为键值对传递多个标签,每个基准测试可以有多个标签。例如,
$ benchie --tag algorithm=bubblesort ./bubblesort
运行可执行文件 ./bubblesort
并将基准测试标记为 algorithm=bubblesort
。
输出标记
在运行时可执行文件的 stdout 上也可以提供标记。例如,benchie 将解析输出,如果
@benchie key=value
打印到 stdout,则将标记 key=value
存储为基准测试的标记。
显示基准测试结果
要查看所有基准测试的概览,只需输入
$ benchie show
一个示例输出可能是
+-----------------+-------------+----------------------------------------------------------------+
| key | occurrences | example values |
+-----------------+-------------+----------------------------------------------------------------+
| commit_id | 2 | 014fbb4b2e5c5cc1de7266a708fa909df9915011 |
+-----------------+-------------+----------------------------------------------------------------+
| user_time | 2 | 567µs, 572µs |
+-----------------+-------------+----------------------------------------------------------------+
| algorithm | 2 | mergesort, bubblesort |
+-----------------+-------------+----------------------------------------------------------------+
| created_at | 2 | 2022-05-11 09:11:54.315066 UTC, 2022-05-11 09:11:47.635744 UTC |
+-----------------+-------------+----------------------------------------------------------------+
| status_code | 2 | 0 |
+-----------------+-------------+----------------------------------------------------------------+
这意味着我们存储了 2 个基准测试,其中我们用一个标记为 algorithm=mergesort
,另一个标记为 algorithm=bubblesort
。
表格视图
为了有效地显示基准测试结果,benchie 提供了一维或二维表格视图。对于一维视图,我们必须提供 --row
选项和我们想要显示的 度量。行和度量都必须至少在一个基准测试中作为键出现。要识别出现的键,请使用 benchie show
。
例如,我们使用 algorithm
作为行,使用 user_time
作为度量
$ benchie show --row algorithm user_time
这可能产生以下输出
+------------+-----------+
| algorithm | user_time |
+------------+-----------+
| bubblesort | 572µs |
+------------+-----------+
| mergesort | 567µs |
+------------+-----------+
对于二维表格视图,我们还需要传递 --col
选项,这再次必须是出现的键。假设我们进行了 4 个基准测试:2 个用于 bubblesort,2 个用于 mergesort,元素分别为 100 和 1000。因此,我们为每个基准测试标记了两个标签:algorithm=bubblesort
和 elements=100
等。要显示以 algorithm
和 elements
为轴,以 user_time
为度量的二维表格视图,我们可以输入
$ benchie show --row algorithm --col elements user_time
这可能产生以下输出
+------------+----------------+
| | 100 | 1000 |
+------------+----------------+
| bubblesort | 572µs | 944µs |
+------------+----------------+
| mergesort | 567µs | 598µs |
+------------+----------------+
过滤
要过滤基准测试结果,可以传递一个等式过滤器作为选项。过滤器选项的语法是 --filter key=value
,例如
$ benchie show --filter algorithm=mergesort --row algorithm user_time
显示一个一维表格视图,只列出 algorithm
等于 mergesort
的条目。
贡献
TBA
许可证
根据 MIT 许可证许可。
依赖项
~14–58MB
~1M SLoC