如何在 CI 中跟踪 Rust 二进制大小

Everett Pompeii

Everett Pompeii


随着时间的推移,二进制文件的体积可能会在 Rust 中膨胀。 持续基准测试 是在每个更改集上运行基准测试,确保更改不会引入性能回退的实践。 您可以将二进制文件大小视为一个基准,在 CI 中跟踪它们以捕捉过大的二进制文件体积。 实现 Rust 二进制文件大小持续基准测试的最简单方法是使用 Bencher。

什么是 Bencher?

Bencher是一套持续型的性能基准测试工具。 你是否曾经因为性能回归影响到了你的用户? Bencher可以防止这种情况的发生。 Bencher让你有能力在性能回归进入生产环境 之前 就进行检测和预防。

  • 运行: 使用你喜爱的基准测试工具在本地或CI中执行你的基准测试。bencher CLI简单地包装了你现有的基准测验设备并存储其结果。
  • 追踪: 追踪你的基准测试结果的趋势。根据源分支、测试床和度量,使用Bencher web控制台来监视、查询和绘制结果图表。
  • 捕获: 在CI中捕获性能回归。Bencher使用最先进的、可定制的分析技术在它们进入生产环境之前就检测到性能回归。

基于防止功能回归的原因,在CI中运行单元测试,我们也应该使用Bencher在CI中运行基准测试以防止性能回归。性能问题就是错误!

Bencher Cloud 的步骤

  1. 创建一个 Bencher Cloud 账户
  2. 创建一个 API 令牌,并将其作为机密添加到您的 CI 中。
  3. 为您的 CI 创建一个工作流,例如 GitHub ActionsGitLab CI/CD
  4. 在您的 CI 工作流中安装 Bencher CLI
  5. 在您的 CI 工作流中,使用 bencher run 子命令编译您的 Rust 代码,使用 --file-size 选项 设置为二进制文件的输出路径,并与 json 适配器一起使用。

Bencher 自托管的步骤

  1. 创建一个 Bencher 自托管实例
  2. 在您的 Bencher 自托管实例上创建一个账户。
  3. 创建一个 API 令牌并将其作为密钥添加到您的 CI。
  4. 为您的 CI 创建一个工作流程,例如 GitHub ActionsGitLab CI/CD
  5. 在您的 CI 工作流程中安装 Bencher CLI。 确保 CLI 版本与您的 Bencher 自托管实例的版本匹配。
  6. 在您的 CI 工作流中,使用 bencher run 子命令编译您的 Rust 代码,使用 --file-size 选项 设置为二进制文件的输出路径,配合 json 适配器 并设置 --host 选项 为您的 Bencher 自托管实例 URL。

⚖️ 文件大小

bencher run CLI子命令 可以用来通过--file-size选项追踪你的交付物的文件大小(即二进制大小)。 --file-size选项期望一个文件路径,来测量该文件的大小。 在底层,bencher run 将结果输出为Bencher度量格式(BMF)JSON。 因此,明确使用the json adapter是一个好习惯。 更多详情参见如何追踪文件大小

收集到的file-size度量(即字节(B))。 只有文件大小值(即value)是可用的。 不收集lower_valueupper_value。 默认情况下不会为所有项目创建file-size度量。 然而,当你使用--file-size选项时,这个度量会自动为你的项目创建。 --file-size 选项可以使用多次来跟踪多个文件大小。

Terminal window
bencher run --file-size ./target/release/example --adapter json "cargo build --release"

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.

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