Разбираем новый аллокатор в Go 1.27

#Разбираем #Разбираемся #Читать
Разбираем новый аллокатор в Go 1.27

В Go 1.27 переделали аллокацию мелких объектов. По бенчмаркам с release notes ожидаемое ускорение может составлять до 30%. Разбираемся так ли это на самом деле, что в итоге сделали и почему эта фича должна была войти в релиз 1.26, но не вошла. Читать далее

Совсем недавно вышел Go 1.27. Я пошел изучать release notes и наткнулся там на следующее:

Faster memory allocation

The compiler now generates calls to size-specialized memory allocation routines, reducing the cost of some small (<80 byte) memory allocations by up to 30%. Improvements vary depending on the workload, but the overall improvement is expected to be ~1% in real allocation-heavy programs. This causes the binary size to increase by about 60 KB (independent of the workload). Please file an issue if you notice any regressions. You may set GOEXPERIMENT=nosizespecializedmalloc at build time to disable it. This opt-out setting is expected to be removed in Go 1.28.

Как-то очень мало текста для такого изменения. Так что давайте разберется вместе.