Как использовать Caliper для бенчмаркинга?
Я пытаюсь понять, как использовать Caliper для тестирования производительности в Eclipse, и у меня ничего не получается. Я попробовал следовать 26-минутному учебнику, найденному здесь: https://code.google.com/p/caliper/ но быстро заблудился. Я скачал файл фляги Caliper, но я не уверен, в какой папке он должен быть. Я также скачал плагин Maven для Eclipse, но я даже не уверен, если это необходимо. Можно ли установить Caliper из меню "Установить новое программное обеспечение" в меню "Справка" в Eclipse? Я просто хочу иметь возможность выполнять очень простые тесты скорости для некоторых из алгоритмов, которые я создал для класса Data Structures and Algorithms, который я использую.
2 ответа
Этот ответ сейчас устарел. Caliper работал в Windows более года, по крайней мере: https://code.google.com/p/caliper/issues/detail?id=167
Суппорт не работает в Windows. Смотрите этот случай. Вам нужно использовать версию 0.5-rc1, у которой есть другие проблемы, но она все еще в порядке и в ней отсутствуют многие функции, но она работает в Windows.
Если вы знаете, как использовать Maven, добавьте этот фрагмент кода pom в ваш файл pom.xml.
<dependency> <groupId>com.google.caliper</groupId> <artifactId>caliper</artifactId> <version>0.5-rc1</version> </dependency>
- Если вы хотите изучать maven, сначала прочитайте это: http://maven.apache.org/guides/getting-started/maven-in-five-minutes.html
- Преобразование вашего проекта в проект Maven (щелкните правой кнопкой мыши проект -> Конфигурировать -> Преобразовать в проект Maven)
- Если вы не знаете, как использовать Maven ( вот руководство, как это сделать с изображениями):
- Скачать банку 0.5-rc1
- Щелкните правой кнопкой мыши по проекту, который хотите использовать, и выберите
Build Path -> Configure Build Path
- Добавьте его на вкладку библиотеки, используя
Add External Jar
Как только вы это сделаете, вы можете начать писать тесты. Вот пример теста, который я написал для другого вопроса переполнения стека.
Вот как вы устанавливаете рабочий класс Caliper, используя последнюю версию Caliper на момент написания этой статьи, caliper-1.0-beta2. Насколько я могу судить, эта процедура не описана нигде, кроме встроенных комментариев в файлах кода Caliper.
Сначала установите caliper-1.0-beta2 в pom.xml или загрузив файл jar. Затем создайте файл следующим образом:
import com.google.caliper.Benchmark;
import com.google.caliper.runner.CaliperMain;
public class DemoBenchmark {
public static void main(String[] args) {
CaliperMain.main(DemoBenchmark.class, args);
}
@Benchmark
void timeStringBuilder(int reps) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < reps; i++) {
sb.setLength(0);
sb.append("hello world");
}
}
}
Запустите этот файл, и Caliper сделает за вас тест.
Я пробовал все предлагаемые решения в Windows, но безуспешно.
Я всегда сталкивался со следующей ошибкой:
This selection yields 4 experiments.
ERROR: Trial failed to complete (its results will not be included in the run):
The worker exited without producing data. It has likely crashed. Inspect C:\Users\Piotr\AppData\Local\Temp\1583760443321-0\trial-1.log to see any worker output.
Я смог решить эту проблему, добавив @VmOptions
аннотация к пользовательскому классу тестов.
Вот полная конфигурация:
@VmOptions("-XX:-TieredCompilation")
public class CaliperBenchmark {
@BeforeExperiment
void setUp() {
// set up
}
@Benchmark
void boxed() {
// test
}
}
Maven: com.google.caliper caliper 1.0-beta-2 compile
Основной класс:
public class Main {
public static void main(String[] args) {
CaliperMain.main(CaliperBenchmark.class, args);
}
}
Командная строка: mvn exec:java -Dexec.mainClass="com.google.caliper.runner.CaliperMain" -Dexec.args="org.CaliperBenchmark"