Verimsiz Üyelik Testi (ARCH5075)
Anahtar go.performance.inefficient-membership-test · Önem warning · Kategori performance
Bir slice’a karşı tekrar tekrar üyelik kontrolü her seferinde O(n) tarama yapar. Özellikle döngü içinde, üyelik için bir map[T]struct{} kullanarak O(1) arama sağlayın.
Hatalı
Bölüm başlığı “Hatalı”func selectAllowed(items, allowed []string) []string { var out []string for _, item := range items { for _, a := range allowed { if item == a { out = append(out, item) } } } return out}func selectAllowed(items, allowed []string) []string { set := make(map[string]struct{}, len(allowed)) for _, a := range allowed { set[a] = struct{}{} } var out []string for _, item := range items { if _, ok := set[item]; ok { out = append(out, item) } } return out}Düzeltme
Bölüm başlığı “Düzeltme”Tekrarlı üyelik kontrollerinde slice taraması yerine map kullanın.