谷歌基准状态.暂停计时() 和状态.恢复计时() 需要很长时间



我正在使用谷歌基准API运行一些性能测试。我使用状态。暂停计时(( 和状态。ResumeTiming(( 以避免不必要的代码段通过 perf 路径运行。我附上了下面的示例代码

 while (state.KeepRunning()) {
    state.PauseTiming();
    state.ResumeTiming();
    state.PauseTiming();
    state.ResumeTiming();
}

这些功能本身需要 323ns 进行 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基准测试的另一个功能。在 for 循环中手动测量您希望运行的代码部分。您可以使用手动计时器 (https://github.com/google/benchmark#cpu-timers( 执行此操作。

您获取所需运行时间的代码段之前和之后的时间时间戳,然后使用 SetIterationTime 将其设置为每次迭代时的状态。

调用此测试时,需要添加->UseManualTime();

最新更新