如何在CI中跟踪Rust编译时间
Everett Pompeii
编译时间可能是构建时间的重要组成部分,特别是在Rust中。持续基准测试是在每个变更集上运行基准测试的做法,以确保变更不会引入性能回退。可以将编译时间视为基准测试,并在 CI 中跟踪它们以捕捉编译时间过长的问题。为Rust编译时间实现持续基准测试的最简单方法是使用 Bencher。
什么是Bencher?
Bencher是一套持续型的性能基准测试工具。 你是否曾经因为性能回归影响到了你的用户? Bencher可以防止这种情况的发生。 Bencher让你有能力在性能回归进入生产环境 之前 就进行检测和预防。
- 运行: 使用你喜爱的基准测试工具在本地或CI中执行你的基准测试。
bencher
CLI简单地包装了你现有的基准测验设备并存储其结果。 - 追踪: 追踪你的基准测试结果的趋势。根据源分支、测试床和度量,使用Bencher web控制台来监视、查询和绘制结果图表。
- 捕获: 在CI中捕获性能回归。Bencher使用最先进的、可定制的分析技术在它们进入生产环境之前就检测到性能回归。
基于防止功能回归的原因,在CI中运行单元测试,我们也应该使用Bencher在CI中运行基准测试以防止性能回归。性能问题就是错误!
Bencher Cloud 的步骤
- 创建一个 Bencher Cloud 账户。
- 创建一个 API 令牌,并将其作为机密添加到您的 CI 中。
- 为您的 CI 创建一个工作流,例如 GitHub Actions 或 GitLab CI/CD。
- 在您的 CI 工作流中安装 Bencher CLI。
-
在您的 CI 工作流中使用
--build-time
标志和json
适配器通过bencher run
子命令编译您的 Rust 代码。
Bencher 自托管的步骤
- 创建一个 Bencher 自托管实例。
- 在您的 Bencher 自托管实例上创建一个账户。
- 创建一个 API 令牌并将其作为密钥添加到您的 CI。
- 为您的 CI 创建一个工作流程,例如 GitHub Actions 或 GitLab CI/CD。
- 在您的 CI 工作流程中安装 Bencher CLI。 确保 CLI 版本与您的 Bencher 自托管实例的版本匹配。
-
在您的 CI 工作流中使用
--build-time
标志和json
适配器通过bencher run
子命令编译您的 Rust 代码,并设置--host
选项为您的 Bencher Self-Hosted 实例 URL。
⏱️ 构建时间
bencher run
CLI 子命令可以用于使用 --build-time
标志来跟踪交付物的构建时间(即编译时间)。在底层,bencher run
将结果输出为 Bencher Metric Format (BMF) JSON。因此,明确使用 the json
adapter 是一种良好的实践。更多详情请参见如何跟踪构建时间。
build-time
度量(即 seconds (s)
)被收集。只有构建时间的值(即 value
)是可用的。lower_value
和 upper_value
都不被收集。build-time
度量并非默认为所有项目创建。然而,当你使用 --build-time
标志时,这个度量将会自动为你的项目创建。
Track your benchmarks in CI
Have you ever had a performance regression impact your users? Bencher could have prevented that from happening with continuous benchmarking.