Scala под капотом
Язык Scala нынче модный: тут вам и паттерн матчинг, и рекурсия, и коллекции, обильно приправленные лямбдами, а также много других страшных слов из мира функционального программирования. И все эти плюшки органично переплетены в такой язык, начав писать на котором, очень тяжело остановиться.
Но волшебство функциональной легкости заканчивается с фразой «а почему я переписал 100 строк лапши на Java в однострочник на Scala, но оно стало работать в 3 раза медленнее?», и мечта о прекрасном языке превращается в тыкву. Суровая реальность грязным сапогом как бы говорит нам, что абстракции языков высокого уровня могут скрывать монстров и все удобства имеют свою цену. И если вы делаете на Scala не простое CRUD-приложение, а что-то, хоть отдаленно связанное с нагрузкой, необходимо хорошо понимать, во что именно вам обходятся все эти монады.
Этот доклад поведает вам о магии, которую творит компилятор скалы под капотом, расскажет об ужасах scala-коллекций, рекурсии и паттерн-матчинга, а также о том, почему же так происходит.
Доклад может открыть глаза на возможные подводные камни производительности людям, практикующим программирование на Scala. В процессе будет рассказано:
- об интеграции jmh и sbt;
- о том, как заставить scalac рассказывать о том, что он там наоптимизировал;
- о тайнах паттерн-матчинга, хвостовой рекурсии и scala-коллекций;
- об умном HotSpot, который геройски все это оптимизирует.
Для полноценного осознания доклада рекомендуется заранее ознакомиться с докладами Алексея Шипилёва об исследованиях производительности в Java.
Разработчик распределенных систем в компании Sociohub. Прошел тернистый путь от дизайнера-неудачника до C++ => Java => Scala программиста, в процессе защитив диссертацию. Любит все распределенное и отказоустойчивое. Активист воронежской Scala User Group.