Как использовать 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"

Другие вопросы по тегам