Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Performance analysis of Java code using microbenchmarks with JMH

NotificationsYou must be signed in to change notification settings

RustamKuramshin/java-performance

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Читать о Java Microbenchmark Harness (JMH) здесь ->https://github.com/openjdk/jmh

Хорошая литература по производительности JVM:

  • Скотт Оукс"Эффективный Java. Тюнинг кода на Java 8, 11 и дальше"

  • Эванс, Гоф, Ньюланд"Java. Оптимизация программ. Практические методы повышения производительности приложений в JVM"

Запуск бенчмарков

Перед запуском каждого бенчмарка выполнить в терминале:

mvn clean installjava -jar target/benchmarks.jar [имя класса бенчмарка]

Интерпретация результатов

Результаты бенчмарков JMH обычно содержат несколько ключевых столбцов, каждый из которых предоставляет важную информацию.

  • Benchmark: Это имя теста. В вашем случае, FactorialBenchmark.loopFactorial и FactorialBenchmark.recursiveFactorial указывают на два разных бенчмарка: один с циклической реализацией факториала, а другой с рекурсивной.

(n): Это параметр, который вы передали в бенчмарк. В вашем случае, это значение n для факториала. Значения 10 и 20 показывают, что бенчмарк был выполнен для факториалов этих чисел.

Mode: Режим, в котором выполнялся бенчмарк. thrpt означает "throughput", т.е. пропускная способность. Это мера того, сколько операций в секунду было выполнено (операций в секунду).

Cnt: Количество итераций (measurements) бенчмарка, которые были выполнены.

Score: Среднее значение пропускной способности для всех итераций. Это основной показатель производительности. В вашем случае, он показывает, сколько раз метод факториала может быть выполнен за секунду. Например, для loopFactorial с n = 10 ваш код может выполняться примерно 236 миллионов раз в секунду.

Error: Погрешность (стандартное отклонение) измерений. Она показывает, насколько стабильны были результаты между различными итерациями бенчмарка. Меньшая ошибка указывает на более стабильные результаты.

Units: Единицы измерения для показателя Score. В вашем случае, это ops/s, то есть операции в секунду.

Интерпретация Результатов

Пропускная Способность: Чем выше значение в столбце Score, тем лучше производительность метода. В вашем случае, циклическая реализация (loopFactorial) оказалась быстрее рекурсивной (recursiveFactorial) для обоих значений n.

Стабильность: Меньшая погрешность (Error) указывает на более предсказуемую и стабильную производительность.

Влияние Размера Задачи: Вы также можете заметить, что производительность обоих методов снижается с увеличением n. Это ожидаемо, так как большие значения n требуют больше вычислений для расчета факториала.

Эти результаты помогают понять, как различные реализации алгоритмов и изменение входных данных могут влиять на производительность в Java.

About

Performance analysis of Java code using microbenchmarks with JMH

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

[8]ページ先頭

©2009-2025 Movatter.jp