如何使用 Bencher 跟踪构建时间


Bencher 开箱即支持最流行的基准测试工具。 不过有时候,你可能想要测量构建可交付成果本身所需的时间,比如可执行文件的编译时间。 幸运的是,Bencher 也支持跟踪构建时间。 跟踪构建时间的最简单方法是使用bencher run CLI 子命令并加上 --build-time 标志。 bencher run 的内部底层会以 Bencher Metric Format (BMF) JSON 格式输出结果。 因此,明确使用 the json adapter 是一个好的实践。

如果您有一个位于 ./my_build_script.sh 的脚本来构建您的二进制文件, 那么您可以使用bencher runjson 适配器来跟踪此二进制文件的构建时间。 --build-time 标志需要一个基准命令

Terminal window
bencher run --build-time --adapter json ./my_build_script.sh

生成的 BMF JSON 看起来如下, 如果您的构建脚本需要 87.0 秒来完成:

{
"/bin/sh -c ./my_build_script.sh": {
"build-time": {
"value": 87.0
}
}
}

请注意,基准名称为 /bin/sh -c ./my_build_script.sh。 这是因为我们的命令只是一个单参数, 所以bencher run 默认为 shell 形式执行。 或者,如果您想强制使用 exec 形式, 可以提供多个参数或使用 --exec 标志。

Terminal window
bencher run --build-time --adapter json --exec ./my_build_script.sh

如果这个 exec 形式的构建花了 86.98 秒, 那么生成的 BMF JSON 将如下所示:

{
"./my_build_script.sh": {
"build-time": {
"value": 86.98
}
}
}

现在,基准名称只是 ./my_build_script.sh./my_build_script.sh 对象包含 build-time 键。 build-time 是内置构建时间度量的 slug。 构建时间度量不会为所有项目默认创建。 但是,当您使用构建时间度量时, 它将为您的项目自动创建。 构建时间度量对象包含一个指标, 其构建时间 value 以秒为单位, 在我们的示例中是 87.086.98

构建时间将始终四舍五入到最接近的两位小数。 也就是说,它_永远不会_是像 42.666666 这样的长小数。

跟踪文件大小

您可能希望在跟踪构建所需时间的同时,跟踪可交付成果的文件大小bencher run 支持同时跟踪构建时间和文件大小。

如果您的 ./my_build_script.sh 构建脚本的输出是一个位于路径 ./path/to/my_binary 的二进制文件, 那么可以使用此命令跟踪编译时间和二进制文件的大小:

Terminal window
bencher run --build-time --file-size ./path/to/my_binary --adapter json ./my_build_script.sh

如果 my_binary 的大小是 42 字节, 生成的 BMF JSON 将如下所示:

{
"/bin/sh -c ./my_build_script.sh": {
"build-time": {
"value": 87.0
}
},
"my_binary": {
"file-size": {
"value": 42.0
}
}
}

🐰 恭喜!您已学会如何跟踪构建时间!🎉


继续前进:如何在 CI 中跟踪基准测试 ➡

🤖 该文档由 OpenAI GPT-4 自动生成。 它可能不准确并且可能包含错误。 如果您发现任何错误,请在 GitHub 上提出问题.


Published: Sat, November 9, 2024 at 10:00:00 AM UTC