2

を使用して複数の反復を実行するにはどうすればよいQBENCHMARKですか?

たとえば、次のコードがあります。

void MyUnitTest::speedText()
{
    QBENCHMARK {
        obj->foo();
    }
}

ドキュメントを見たところ、次のように書かれています。

QBENCHMARK マクロ内のコードが測定され、正確な測定値を取得するために数回繰り返されることもあります。これは、選択した測定バックエンドによって異なります。

デフォルトの と を試しました-tickcounterが、どちらも 1 回の繰り返ししか表示されません。

デフォルト (引数なし):

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 つは機能しません - -callgrindLinux 専用-eventcounterですが、単体テストが終了するようです。

QBENCHMARKでは、複数の反復を行う方法はありますか?

4

1 に答える 1

4

QBENCHMARK繰り返しの経過時間が一定のしきい値を超える限り、1 回だけ実行されます (しきい値は、選択したバックエンドによって異なります)。

複数の反復を強制的QBENCHMARKに実行するには、コマンド ライン オプション -iterations 10を設定する必要があります。

于 2015-03-20T08:44:17.037 に答える