如何在CI中跟踪Python pytest-benchmark基准测试

Everett Pompeii
现在您已经了解了如何使用pytest-benchmark对Python代码进行基准测试,让我们来看一下如何在CI中跟踪这些基准测试。持续基准测试是对每个变更集运行基准测试的做法,以确保这些更改不会引入性能回退。使用pytest-benchmark基准测试实现持续基准测试的最简单方法是使用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 工作流中使用
bencher run
子命令运行您的基准测试,使用 这个python_pytest
适配器。
Bencher 自托管的步骤
- 创建一个 Bencher 自托管实例。
- 在您的 Bencher 自托管实例上创建一个账户。
- 创建一个 API 令牌并将其作为密钥添加到您的 CI。
- 为您的 CI 创建一个工作流程,例如 GitHub Actions 或 GitLab CI/CD。
- 在您的 CI 工作流程中安装 Bencher CLI。 确保 CLI 版本与您的 Bencher 自托管实例的版本匹配。
-
使用
bencher run
子命令在您的 CI 工作流程中运行基准测试,使用python_pytest
适配器 并设置--host
选项 为您的 Bencher 自托管实例的 URL。
🐍 Python Pytest
Python Pytest 适配器(python_pytest
)期望 pytest-benchmark 的输出以 JSON 格式(即 --benchmark-json results.json
)。
这个 JSON 输出被保存到一个文件中,因此你必须使用 bencher run
CLI 的 --file
参数来指定该文件路径。
延迟
测量指标(即 纳秒 (ns)
)会被收集。
bencher run --adapter python_pytest --file results.json "pytest --benchmark-json results.json benchmarks.py"
有两个选项用于指标:
平均值
(默认):lower_value
和upper_value
分别是平均值(即value
)标准差以下和以上。中位数
:lower_value
和upper_value
分别是中位数(即value
)的四分位距以下和以上。
可以使用 bencher run
CLI 子命令中的可选 --average
参数来指定这一点。
在CI中跟踪您的基准
您是否曾经遇到过影响用户的性能回归?Bencher可以通过持续的基准测试来防止这种情况发生。
🤖 该文档由 OpenAI GPT-4 自动生成。 它可能不准确并且可能包含错误。 如果您发现任何错误,请在 GitHub 上提出问题.