谷歌基准state.PauseTiming()和state.ResumeTiming()需要很长的时间。

问题描述 投票:1回答:1

我正在使用google benchmark API运行一些性能测试。我使用state.PauseTiming()和state.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

这是一个bug在谷歌基准API或有任何变通的办法吗?

benchmarking google-benchmark
1个回答
0
投票

我有一个类似的用例,我注意到,暂停和恢复有很多开销,这是在他们的文档中也提到。

这个的变通方法是Google Benchmarks的另一个功能。在for循环里面手动测量你想要运行时间的那部分代码。你可以使用手动定时器(https:/github.comgooglebenchmark#cpu-timers。).

你可以在你想要运行时间的代码段之前和之后获取计时码时间戳,然后你可以在每次迭代时使用 SetIterationTime.

当你调用这个测试的时候,你需要添加一个叫做 ->UseManualTime();

© www.soinside.com 2019 - 2024. All rights reserved.