为了使切片追加操作更快,我们需要分配足够的容量.追加Slice有两种方式,代码如下:
func BenchmarkSliceAppend(b *testing.B) {
a := make([]int, 0, b.N)
for i := 0; i < b.N; i++ {
a = append(a, i)
}
}
func BenchmarkSliceSet(b *testing.B) {
a := make([]int, b.N)
for i := 0; i < b.N; i++ {
a[i] = i
}
}
结果是:
基准-4 200000000 7.87 ns/op 8 B/op 0 allocs/op
基准切片集-4 300000000 5.76 ns/op 8 B/op
为什么a[i] = i
比a = append(a, i)
快?