На тесте с объектом размером 16 байт:
Go 1.26 → ~9,5 нсGo 1.27 → ~5,5 нсПричина в самом аллокаторе.
Раньше даже для маленьких объектов компилятор вызывал одну универсальную функцию, а runtime уже определял нужный size class: 8, 16, 24, 32 байта и т.д.
В Go 1.27 для объектов меньше 80 байт появились специализированные пути аллокации под конкретные классы размеров. Лишняя работа в runtime просто исчезает.
Больше всего выиграют программы, которые постоянно создают множество мелких объектов:
• парсеры
• деревья и списки
• очереди событий
• структуры с отдельной heap-аллокацией каждой ноды
А вот сервисы с редкими крупными аллокациями почти ничего не заметят.
Редкий случай, когда достаточно просто пересобрать проект новым Go и получить ускорение бесплатно.
https://vc.ru/dev/3081222-go-1-27-uluchshaet-proizvoditelnost-allokatsiy-pamyati
