Scala под капотом

Язык Scala нынче модный: тут вам и паттерн матчинг, и рекурсия, и коллекции, обильно приправленные лямбдами, а также много других страшных слов из мира функционального программирования. И все эти плюшки органично переплетены в такой язык, начав писать на котором, очень тяжело остановиться.

Но волшебство функциональной легкости заканчивается с фразой «а почему я переписал 100 строк лапши на Java в однострочник на Scala, но оно стало работать в 3 раза медленнее?», и мечта о прекрасном языке превращается в тыкву. Суровая реальность грязным сапогом как бы говорит нам, что абстракции языков высокого уровня могут скрывать монстров и все удобства имеют свою цену. И если вы делаете на Scala не простое CRUD-приложение, а что-то, хоть отдаленно связанное с нагрузкой, необходимо хорошо понимать, во что именно вам обходятся все эти монады.

Этот доклад поведает вам о магии, которую творит компилятор скалы под капотом, расскажет об ужасах scala-коллекций, рекурсии и паттерн-матчинга, а также о том, почему же так происходит.

Доклад может открыть глаза на возможные подводные камни производительности людям, практикующим программирование на Scala. В процессе будет рассказано:

  • об интеграции jmh и sbt;
  • о том, как заставить scalac рассказывать о том, что он там наоптимизировал;
  • о тайнах паттерн-матчинга, хвостовой рекурсии и scala-коллекций;
  • об умном HotSpot, который геройски все это оптимизирует.

Для полноценного осознания доклада рекомендуется заранее ознакомиться с докладами Алексея Шипилёва об исследованиях производительности в Java.

Роман Гребенников, Sociohub

@public_void_grv

Разработчик распределенных систем в компании Sociohub. Прошел тернистый путь от дизайнера-неудачника до C++ => Java => Scala программиста, в процессе защитив диссертацию. Любит все распределенное и отказоустойчивое. Активист воронежской Scala User Group.