2015-03-20 3 views
0

Как выполнить несколько итераций с помощью QBENCHMARK?Force 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-only, тогда как -eventcounter, по-видимому, вызывает un он проверяет завершение.

Итак, есть способ сделать QBENCHMARK сделать несколько итераций?

+0

Я думаю, что QBENCHMARK будет работать только один раз, если таймер будет неизмеримо –

+0

О, я понял. Я думал, что он будет запускать его, по крайней мере, несколько раз, чтобы показать эффекты кэширования (первый запуск по сравнению со средним). Думаю, я мог бы просто имитировать его, повторяя блок «QBENCHMARK». – sashoalm

ответ

2

QBENCHMARK работает только один раз, пока прошедшее время для итерации превышает некоторый фиксированный порог (порог зависит от выбранного бэкэнд).

Для того чтобы заставить QBENCHMARK выполнить несколько итераций, необходимо установить command line option-iterations 10.

Смежные вопросы