Go 1.27 ускоряет аллокации памяти до 30%

Size-Specialized Memory Allocation

В Go 1.27 появилась специализированная по размеру аллокация памяти для объектов до 80 байт. Это ускоряет аллокации на 20–30%, а программы с интенсивным выделением памяти — до 1%. Оптимизация достигается за счёт генерации отдельных функций mallocgc для каждого span-класса, что позволяет компилятору применять дополнительные оптимизации, например прямое обнуление памяти. Наибольший выигрыш получают распространённые размеры 16 и 24 байта.

Мы потратили много времени на настройку поведения специализированного по размеру malloc и на то, чтобы свести к минимуму влияние эффектов кэша инструкций: изначально мы планировали выпустить специализированную по размеру аллокацию в Go 1.26, но решили подождать ещё один релиз, чтобы провести дополнительную настройку и максимально сократить дополнительный размер кода.

Ещё за этот день

2026-09-18