强制QBENCHMARK执行多次迭代

时间:2015-03-20 08:03:49

标签: c++ windows qt qtestlib

如何使用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进行多次迭代?

1 个答案:

答案 0 :(得分:3)

QBENCHMARK只运行一次,只要迭代的经过时间超过某个固定阈值(阈值取决于所选择的后端)。

为了强制QBENCHMARK执行多次迭代,您需要设置command line option -iterations 10