Как стать автором
Обновить

Комментарии 6

При этом PGO влияет только на две оптимизации: встраивание и девиртуализацию.

То есть разбивки функций на горячие/холодные куски в Go пока нет?

Как раз такая разбивка и существует - получается после профилирования. Только эта информация используется как раз лишь двумя оптимизациями. В этом плане pgo и go в целом есть куда расти

Так я именно про использование информации - разбивку бинарного кода функций на куски и укладывание горячих кусков разных функций рядом для уменьшения icache/itlb миссов.

Понял! Нет, пока что у разработчиков golang это в беклоге лежит

Именно в компиляторе нет. Как паттерн написания кода есть, можно даже в стандартной библиотеке увидеть такое. Например sync.Mutex.Lock() так написан

Похоже, но не совсем то - идея не в том, чтобы заинлайнить горячие куски, а чтобы сложить их рядом при линковке. Инлайнинг для frontend-bound кода (в смысле TMA) может и ухудшить производительность.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий