我正在使用 google benchmark API 运行一些性能测试。我使用 state.PauseTiming() 和 state.ResumeTiming() 来避免不必要的代码段通过 perf 路径运行。我附上了下面的示例代码
while (state.KeepRunning()) {
state.PauseTiming();
state.ResumeTiming();
state.PauseTiming();
state.ResumeTiming();
}
这些函数本身需要 323 纳秒进行 2 次暂停和恢复。
hiRun on (16 X 3196.36 MHz CPU s)
2019-06-19 11:21:06
---------------------------------------------------------------
Benchmark Time CPU Iterations
---------------------------------------------------------------
Benchmark_Test1 323 ns 324 ns 2158319
这是谷歌基准 API 中的错误还是有任何解决方法?
我有一个类似的用例,我注意到暂停和恢复有很多开销,他们的文档中也提到了这一点。
解决此问题的方法是 Google Benchmarks 的另一个功能。手动测量 for 循环内您希望运行时间的代码部分。您可以使用手动计时器来做到这一点(https://github.com/google/benchmark#cpu-timers https://github.com/google/benchmark#cpu-timers).
您在需要运行时间的代码段之前和之后获取计时时间戳,然后使用以下命令将其设置为每次迭代的状态SetIterationTime
.
当您调用此测试时,您需要添加->UseManualTime();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)