Döngüde Tekrar Eden İş (ARCH5072)
Anahtar go.performance.repeated-work-in-loop · Önem info · Kategori performance
Döngü değişkenine bağlı olmayan bir hesaplama her yinelemede yeniden çalıştırılır. Döngü-değişmez (loop-invariant) ifadeleri döngünün dışına taşıyın.
Hatalı
Bölüm başlığı “Hatalı”func match(items []string, prefix string) []string { var out []string for _, item := range items { if strings.HasPrefix(item, strings.ToLower(prefix)) { out = append(out, item) } } return out}func match(items []string, prefix string) []string { lower := strings.ToLower(prefix) var out []string for _, item := range items { if strings.HasPrefix(item, lower) { out = append(out, item) } } return out}Düzeltme
Bölüm başlığı “Düzeltme”Girdileri döngü değişkenine bağlı olmayan hesaplamaları döngü öncesine taşıyın.