Google Benchmark state.PauseTiming()和state.ResumeTiming()需要很长时间 [英] Google benchmark state.PauseTiming() and state.ResumeTiming() take a long time

查看:14
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆