В 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
}
}
}
