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

MIT 许可证

72KB
2K SLoC

benchie



网站   |   文档   |   Twitter   |   邮箱

什么是 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=bubblesortelements=100 等。要显示以 algorithmelements 为轴,以 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