TGViewer
Библиотека Java разработчика Библиотека Java разработчика @bookjava · 10K subscribers
Post #2710 2.05K
Как измерить производительность метода?

Если вы собираетесь оптимизировать код, или же выбрать лучшее с точки зрения производительности готовое решение, выбор необходимо подтвердить тестом производительности до и после. Такие тесты называются benchmark.

Первый вариант который приходит в голову – измерить время до, выполнить метод, посмотреть сколько времени прошло. У такого подхода есть ряд нюансов. Каждый последующий замер может случайным образом сильно отличаться от предыдущего. В реальном приложении результат будет совсем отличным от тестового, потому что виртуальная машина будет «прогретой»: заполнятся различные системные кэши, произойдут JIT-оптимизации горячего кода, память наполнится мусором.

Наивный подход может показать приблизительную производительность долгих операций: ввода-вывода, системных вызовов, или пользовательских сценариев на развернутом тестовом стенде. При тестировании кусков Java кода (в микробенчмарках) время выполнения очень мало, поэтому упомянутые нюансы вносят значительный вклад в результат.

Самое правильное решение – использовать готовый инструмент из JDK, JMH. Для этого его библиотеки добавляются в зависимости, а тестовый метод помечается аннотацией @Benchmark. Тесты можно запускать в виде исполняемого jar-файла, либо вызовом специальных программных методов библиотеки. Итоги тестирования будут выведены в виде таблицы в консоль.

👉@BookJava
  • 👍 4
More from @bookjava
  1. Oct 10, 2026🚀 Подборка полезных IT каналов в Max Системное администрирование, DevOps 📌 https://max.r…
  2. Oct 8, 2026📌 Обход коллекций в Java: делаем правильно! Часто вижу, как разработчики по привычке испо…
  3. Oct 7, 2026📌 Stream API: забудьте про peek() Метод peek() в Java Stream API выглядит удобным для отл…
  4. Oct 5, 2026🧠 Dependency Inversion Principle (D в SOLID) Зависимости должны идти от высокоуровневой п…
  5. Sep 30, 2026Три похожих слова в Java — final, finally, finalize — но смысл у них совершенно разный. Ра…
  6. Sep 27, 2026🧠 Ленивая инициализация через Supplier — элегантная альтернатива double-checked locking К…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →