Получить доступ

Какой инструмент обычно используют для корректных Java microbenchmarks?

MiddleJIT и производительность
Коротко

JMH (Java Microbenchmark Harness) от разработчиков OpenJDK: учитывает прогрев, форки JVM, устранение мёртвого кода, свёртку констант, статистику по итерациям.

  • @Benchmark, @State, @Warmup, @Fork
  • Blackhole потребляет результат, чтобы JIT его не выбросил
  • Профилировщики: -prof gc, -prof async

А ещё Сравнивать варианты под одной нагрузкой, смотреть на погрешность

Так подсказку видит пользователь sotto на живом собеседовании — за пару секунд, пока вы думаете вслух.

Подробно

JMH учитывает warmup, forks, dead-code elimination и другие эффекты JVM/JIT. Наивное измерение одного вызова часто даёт мусор.

Что хотят услышать

  • Название.
  • Какие проблемы JMH решает.

Частые ошибки

  • Мерить холодный код без warmup.
  • Не защищаться от оптимизации неиспользуемого результата.

Проверьте себя

Один верный вариант. Подумайте, потом откройте ответ.

Показать варианты и ответ
  • ✗System.currentTimeMillis() вокруг одного вызова
  • ✓JMH
  • ✗Thread.sleep()
  • ✗javap

Что спросят дальше

  • Зачем нужен warmup?
  • Что такое dead-code elimination?

Разбор темы

Связанные вопросы

Закрытая бета

Подсказки на собеседовании — в реальном времени

sotto слышит вопрос интервьюера и показывает короткий ответ и план, как в блоке «Коротко». Оставьте контакт — пришлём доступ и промокод.

  • Промокод на 2 часа — сверх пробных 30 минут
  • Программа для Windows — скачать сразу, войти — через Яндекс ID или VK ID
  • Прямая связь с разработчиком: что улучшить — сделаем