Senior
// Care este problema cu acest cod? Cum poate fi îmbunătățit? func fn() { str := "" for i := 0; i < 100000; i++ { str += fmt.Sprintf("%d", i) } fmt.Println(str) }
sobes.tech AI
Răspuns de la AI
Problema acestui cod este că șirul str este concatenat într-un ciclu folosind operatorul +=. În Go, șirurile sunt imutabile, așa că la fiecare iterație se creează un șir nou, ceea ce duce la un număr mare de alocări și scade performanța.
Este mai bine să folosiți strings.Builder sau bytes.Buffer pentru acumularea eficientă a șirurilor:
import (
"fmt"
"strings"
)
func fn() {
var builder strings.Builder
for i := 0; i < 100000; i++ {
builder.WriteString(fmt.Sprintf("%d", i))
}
fmt.Println(builder.String())
}
Aceasta va reduce semnificativ numărul de alocări și va accelera execuția codului.