如何在持续集成中包含Google Benchmark

10
我喜欢在我们的持续集成环境中包含google benchmark测试。
如何检查被测试的代码是否比以前变慢了?我必须手动处理基准测试的json输出吗?
有没有一种优雅的方法来考虑不同的机器?
有没有一种优雅的方法来检查同一台机器上每个构建的性能?有没有比编写bash脚本并将实际性能输出与参考性能进行比较更好的方法?
曾经有一个类似的问题,但没有好的答案。
有没有一种将其集成到Jenkins中的方法?

如果你仍在寻找一种方法:你是否尝试过compare_bench.py工具 - Mike van Dyke
2个回答

4
为了在Jenkins中集成Google Benchmark,我使用了这个方便的插件:https://plugins.jenkins.io/benchmark。我让测试输出.json文件,并编写了一个自定义的JSON模式,以便插件可以理解输出:benchmarks.exe --benchmark_out=benchmarktest_output.json
{
  "description": "Google Benchmark JSON schema",
  "failure": { "value": true },
  "type": "object",
  "properties": {
    "benchmarks": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "name": { "type": "name" },
          "real_time": { "type": "result" },
          "cpu_time": { "type": "result" },
          "iterations": { "type": "parameter" }
        }
      }
    }
  }
}

但是我无法在插件中显示所有输出。例如,我还没有想出如何同时显示时间单位和实际时间以及CPU时间,只能一次显示其中之一。


0

使用this Python工具,可以自动化评估 Google 基准测试,从而将其集成到持续集成工具中。

感谢 @MikeVanDyke 的提示。


你能详细说明一下吗?特别是当一个新的git提交导致性能下降时,我希望CI能够触发警告,甚至阻止新提交被合并。这是否可能? - Lewis Chan
我想知道如何使用compare.py来比较基础提交版本和你的提交版本之间的性能? - Lewis Chan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接