【问题标题】:Force QBENCHMARK to perform several iterations强制 QBENCHMARK 执行多次迭代
【发布时间】: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 块来模拟它。

标签: c++ windows qt qtestlib


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-27
    • 1970-01-01
    • 2020-05-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多