Go-компилятор: оптимизации без мифов
Программный комитет ещё не принял решения по этому докладу
Целевая аудитория
Тезисы
Про компилятор Go часто можно услышать: «он недостаточно умный, вот в Rust или C++ оптимизации — а в Go что?». Но так ли это на самом деле? Действительно ли Go-компилятор безнадёжен, или за простотой скрывается вполне серьёзный арсенал?
В докладе мы разберёмся, что на самом деле делает компилятор Go, и какие оптимизации происходят незаметно для разработчика:
* посмотрим, как выглядит полный flow оптимизаций;
* вспомним про классические приёмы: inlining, escape analysis;
* разберемся что такое SSA, как оно устроено и какую пользу он принес;
* оценим весь масштаб constant folding;
* поймем есть ли оптимизации циклов: loop unrolling, loop invariant code motion и vectorization;
* сравним наш компилятор с более агрессивными, например из C++;
* обсудим, почему часть оптимизаций так и не добавлена (или добавляется крайне осторожно).
В завершение обсудим: действительно ли компилятор Go так уж «глуп», и почему авторы языка могут намеренно сдерживать его развитие в сторону сложных оптимизаций.
8 лет опыта коммерческой разработки на бэкенде в FoodTech-сегменте.
Молниеносно решает проблемы бизнеса и коллег.