Между Caliper 0.5 и 1.0 немного изменилась терминология, но это должно объяснить это для обоих. Имейте в виду, что в 0.5 все было немного неясно, поэтому большинство изменений, внесенных в 1.0, должны были сделать вещи более ясными и точными.
Калипер 0,5
Один вызов Caliper представляет собой запуск. Каждый запуск имеет определенное количество испытаний, что представляет собой еще одну итерацию всей работы, выполняемой в ходе выполнения. В рамках каждого испытания Caliper выполняет определенное количество сценариев. Сценарий – это комбинация виртуальной машины, эталонного теста и т. д. Время выполнения сценария измеряется временем выполнения некоторого количества повторений — числа, которое передается вашему методу эталонного теста во время выполнения. Многократные повторения, конечно, необходимы, потому что было бы невозможно получить точные измерения для одного вызова в микротесте.
Суппорт 1.0
Caliper 1.0 следует довольно похожей модели. Один вызов Caliper по-прежнему является запуском. Каждый запуск состоит из некоторого количества испытаний, но более точно испытание определяется как вызов сценария, измеренного с помощью инструмента.
Сценарий примерно определяется тем, что вы измеряете (хост, виртуальная машина, тест, параметры), а инструмент — это код, который выполняет измерение и как он был настроен. Идея заключалась в том, что если бы идеально воспроизводимый эталон был функцией формы f(x)=y
, Caliper был бы определен как instrument(scenario)=measurements
.
При выполнении инструмента времени выполнения (он аналогичен для других) все еще существует то же понятие повторений, которое представляет собой количество итераций, передаваемых коду эталонного теста. Вы не можете контролировать значение повторения напрямую, так как каждый инструмент будет выполнять свои собственные расчеты, чтобы определить, каким оно должно быть.
Во время выполнения Caliper планирует свое выполнение, вычисляя некоторое количество экспериментов, которые представляют собой комбинацию инструмента, теста, виртуальной машины и параметров. Каждый эксперимент выполняется --trials
раз и сообщается как отдельное испытание с собственным идентификатором.
Как использовать параметр reps
Традиционно лучший способ использовать параметр reps — включить в код теста цикл, который выглядит примерно так:
for (int i = 0; i < reps; i++) {…}
Это самый прямой способ убедиться, что число повторений линейно масштабируется в соответствии с отчетным временем выполнения. Это необходимое свойство, потому что Caliper пытается вывести стоимость одной единообразной операции на основе совокупной стоимости многих операций. Если время выполнения не зависит от количества повторений, результаты будут недействительными. Это также означает, что повторения не должны передаваться непосредственно в тестируемый код.
person
gk5885
schedule
04.02.2013