Google Benchmark state.PauseTiming()和state.ResumeTiming()需要很长时间 [英] Google benchmark state.PauseTiming() and state.ResumeTiming() take a long time
本文介绍了Google Benchmark state.PauseTiming()和state.ResumeTiming()需要很长时间的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在使用Google Benchmark API运行一些性能测试。我使用state.PauseTiming()和state.ResumeTiming()来避免不必要的代码段通过perf路径运行。我已经附上了下面的示例代码
while (state.KeepRunning()) {
state.PauseTiming();
state.ResumeTiming();
state.PauseTiming();
state.ResumeTiming();
}
这些函数本身2次暂停和恢复耗时323 ns。
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
这是Google Benchmark API中的错误还是有解决方法?
推荐答案
我有过类似的用例,我注意到暂停和恢复有很多开销,他们的文档中也提到了这一点。
解决此问题的方法是Google基准测试的另一个功能。手动测量要在for循环中运行的代码部分。您可以使用手动计时器(https://github.com/google/benchmark#cpu-timers)执行此操作。
在您想要运行时间的代码段之前和之后获取计时时间戳,然后使用SetIterationTime
将其设置为每次迭代时的状态。
调用此测试时,需要添加->UseManualTime();
这篇关于Google Benchmark state.PauseTiming()和state.ResumeTiming()需要很长时间的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文