Доклад
Использование машинного обучения для улучшения инлайнинга в LLVM
Встраивание функций (инлайнинг) — это оптимизация, которая основана на эвристиках, использующихся для принятия итогового решения о встраивании функции. Эти эвристики призваны сделать эффективное решение в общем случае, но, как следствие, могут привести к далеким от эффективности решениям в отличающихся от общих случаев. Для решения этой проблемы в LLVM была добавлена поддержка использования модели машинного обучения, которая на основе анализа компилируемого кода отвечает на вопрос, нужно ли встраивать функцию в рассматриваемое место вызова.
В докладе разберем, как устроен этот механизм определения необходимости встраивания функций с использованием машинного обучения, как он может улучшить вашу программу и какие ограничения имеет.