Что же мы измеряем?

Stream API, которое появилось в Java 8, — это модно, красиво, функционально и современно. Но насколько оно проигрывает в скорости традиционным циклам? Какова цена удобства?

В этом докладе мы начнём маленькое путешествие с маленького и наивного бенчмарка, придуманного для оценки скорости Stream API, затем проберёмся через дебри JIT-компиляции в HotSpot JVM, заглянем в омут инлайнинга и посмотрим, какова его глубина и можно ли в нём утонуть.

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

Полученные знания помогут вам избегать некоторых ошибок при написании бенчмарков, использовать и интерпретировать диагностические опции HotSpot JVM и лучше понять, как исполняется ваш код.


Тагир Валеев 

Разрабатываю и поддерживаю системы автоматизации научных исследований в области генетики, молекулярной и системной биологии. Участвую в проекте статического анализа кода FindBugs. Разрабатываю открытую библиотеку StreamEx, расширяющую возможности Java 8 Stream API.
Известен на хабре как lany.