Язык Scala нынче модный: тут вам и паттерн матчинг, и рекурсия, и коллекции, обильно приправленные лямбдами, а также много других страшных слов из мира функционального программирования, для понимания которых не нужна ученая степень по математике. И все эти плюшки органично переплетены в такой язык, начав писать на котором, очень тяжело перестать.
Но волшебство функциональной легкости заканчивается с фразой "а почему я переписал 100 строк лапши на Java в однострочник на Scala, но оно стало работать в 3 раза медленнее?", и мечта о прекрасном языке превращается в тыкву. Суровая реальность грязным сапогом как бы говорит нам, что абстракции языков высокого уровня могут скрывать монстров и всё удобство имеет свою цену. И если вы делаете на Scala не простое CRUD-приложение, а что-то, хоть отдаленно связанное с нагрузкой, необходимо хорошо понимать, во что именно вам обходятся все вот эти монады-шмонады.
Доклад может открыть глаза на возможные подводные камни производительности людям, практикующим программирование на Scala. В процессе будет рассказано:
* об интеграции jmh и sbt;
* о том, как заставить scalac рассказывать о том, что он там наоптимизировал;
* о тайнах паттерн-матчинга, хвостовой рекурсии и scala-коллекций;
* об умном HotSpot, который геройски все это оптимизирует.
![](https://i.ytimg.com/vi/__PLkxx6Yko/maxresdefault.jpg)