Java Benchmarking: как два таймстампа записать!
Померить производительность — это так просто! Два раза по System.nanoTime(), взяли разность, сложили-поделили, и всё, можно оптимизировать. Как бы не так!
В этом докладе мы поговорим о том, как исследуют производительность приложений при помощи бенчмарков, какие частые ошибки возникают, как с ними бороться, и как вообще получить хоть какие-то полезные данные о мире, где всё от всего зависит. Красной нитью в докладе проходит Java Microbenchmark Harness (JMH), стандартный харнесс для написания и исследования бенчмарков в OpenJDK.
Работает над производительностью Java около 9 лет. За это время он успел позаниматься производительностью Apache Harmony в Intel, затем перешёл в Sun Microsystems, а потом и в Oracle, где сегодня работает над производительностью Sun/Oracle JDK, в том числе производительностью JVM, библиотек классов, фреймворков и приложений. Алексей является техническим представителем Oracle в Standard Performance Evaluation Corporation (SPEC), занятой разработкой и поддержкой промышленных бенчмарков.