В go 1.22 провели изящный рефакторинг части когда по увеличение емкости среза на x1.25 относительно порога значения емкости в 256.
Не большой тест на arm M1 Pro:
const threshold = 256
//v 1.21
func BenchmarkName121(b *testing.B) {
var newcap = threshold
var newLen = 100_000_000_000
for 0 < newcap && newcap < newLen {
newcap += (newcap + 3*threshold) / 4
}
if newcap <= 0 {
newcap = newLen
}
}
//v 1.22
func BenchmarkName122(b *testing.B) {
var newcap = threshold
var newLen = 100_000_000_000
for {
newcap += (newcap + 3*threshold) >> 2
if uint(newcap) >= uint(newLen) {
break
}
}
}
![В 8 из 10 прогонов результат одинаковый, в оставшихся - 121 показывает лучший результат В 8 из 10 прогонов результат одинаковый, в оставшихся - 121 показывает лучший результат](https://habrastorage.org/getpro/habr/upload_files/c42/864/377/c428643772aa445c08525fed196f29af.png)