Büyük Koleksiyon Kopyası (ARCH5086)
Anahtar go.performance.large-collection-copy · Önem info · Kategori performance
Nihai boyut bilinirken append’i sıfır kapasiteli bir slice üzerinde çalıştırmak tekrarlı yeniden tahsis ve kopya doğurur. make ile kapasiteyi önceden ayırın.
Hatalı
Bölüm başlığı “Hatalı”func double(in []int) []int { var out []int for _, n := range in { out = append(out, n*2) } return out}func double(in []int) []int { out := make([]int, 0, len(in)) for _, n := range in { out = append(out, n*2) } return out}Düzeltme
Bölüm başlığı “Düzeltme”Hedef slice’ı make([]T, 0, len(in)) ile kapasitesini önceden ayırarak oluşturun.