【发布时间】:2015-05-23 14:14:35
【问题描述】:
如何使用QBENCHMARK 执行多次迭代?
例如我有这个代码:
void MyUnitTest::speedText()
{
QBENCHMARK {
obj->foo();
}
}
我查看了文档,它说:
将测量 QBENCHMARK 宏中的代码,并且可能还会重复多次以获得准确的测量结果。这取决于所选的测量后端。
我尝试使用默认值和-tickcounter,但两者都只显示一次迭代:
默认(无参数):
RESULT : MyUnitTest::speedText():
89 msecs per iteration (total: 89, iterations: 1)
与-tickcounter:
RESULT : MyUnitTest::speedText():
210,246,493 CPU ticks per iteration (total: 210,246,493, iterations: 1)
另外 2 个不起作用 - -callgrind 仅适用于 Linux,而 -eventcounter 似乎会导致单元测试终止。
那么有没有办法让QBENCHMARK 进行多次迭代?
【问题讨论】:
-
如果时间范围不可估量,我认为 QBENCHMARK 只会运行不止一次
-
哦,我现在明白了。我认为它至少会运行几次以显示缓存的效果(第一次运行与平均运行)。我想我可以通过重复
QBENCHMARK块来模拟它。