Как использовать Microbenchmark Suite в Java 12? - PullRequest
5 голосов
/ 19 марта 2019

Согласно JEP 230: Microbenchmark Suite существует набор микробенчмарков, встроенный в Java 12. JEP объясняет, что это в основном JMH, но без необходимости явно зависеть от него с помощью Maven / Gradle.Однако в нем не указано, как получить доступ к классам / аннотациям, принадлежащим к комплекту, для выполнения теста производительности.

Мои вопросы:

  • Есть ли конкретная Java?модуль, который мне требуется в моем module-info.java, чтобы иметь возможность использовать этот пакет?
  • В каких пакетах находятся классы / аннотации этого пакета?
  • Есть ли какие-либоОсновные различия между этим набором и JMH?

1 Ответ

7 голосов
/ 20 марта 2019

Ваша интерпретация неверна. JEP говорит:

Добавьте базовый набор микробенчмарков к исходному коду JDK и упростите разработчикам запуск существующих микробенчмарков и создание новых.

т.е. это не обязательно что-то, что превращает его в дистрибутив JDK, просто что-то, что добавляется в репозиторий исходного кода, чтобы упростить запуск эталонных тестов в коде JDK. Хотя, честно говоря, тот факт, что в указан в качестве одной из «функций» JDK 12, кажется немного вводящим в заблуждение.

Тесты можно выполнить с помощью системы сборки OpenJDK. После того, как вы клонировали исходный код OpenJDK из http://hg.openjdk.java.net/jdk/jdk/ (или другого репозитория, включающего JEP), вы можете запустить тесты производительности, например. используя:

make test TEST="micro:java.lang.reflect"

Тесты расположены в каталоге \test\micro\. Смотрите также документацию: http://hg.openjdk.java.net/jdk/jdk/raw-file/ddfb658c8ce3/doc/testing.html#microbenchmarks

Кроме того, для этого требуется указать JMH и его зависимости при создании конфигурации сборки:

bash configure --with-jmh="/path/to/jmh/jars"

Необходимые банки: commons-math3 , jmh-core , jmh-generator-annprocess и jopt-simple .

...