Döngüde Regex Yeniden Derleme (ARCH5073)
Anahtar go.performance.regex-recompiled-in-loop · Önem warning · Kategori performance
regexp.MustCompile döngü içinde çağrıldığında her yinelemede aynı deseni yeniden derler; bu pahalıdır. Deseni döngü dışında bir kez derleyin.
Hatalı
Bölüm başlığı “Hatalı”func filter(lines []string) []string { var out []string for _, line := range lines { re := regexp.MustCompile(`^\d+`) if re.MatchString(line) { out = append(out, line) } } return out}var numRe = regexp.MustCompile(`^\d+`)
func filter(lines []string) []string { var out []string for _, line := range lines { if numRe.MatchString(line) { out = append(out, line) } } return out}Düzeltme
Bölüm başlığı “Düzeltme”Regex’i döngü dışında (idealde paket düzeyinde bir var) bir kez derleyin.