Senior
// Quel est le problème avec ce code ? Comment l'améliorer ? func fn() { str := "" for i := 0; i < 100000; i++ { str += fmt.Sprintf("%d", i) } fmt.Println(str) }
sobes.tech IA
Réponse de l'IA
Le problème de ce code est que la chaîne str est concaténée dans une boucle à l'aide de l'opérateur +=. En Go, les chaînes sont immuables, donc à chaque itération, une nouvelle chaîne est créée, ce qui entraîne un grand nombre d'allocations et une baisse des performances.
Il est préférable d'utiliser strings.Builder ou bytes.Buffer pour accumuler efficacement les chaînes :
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())
}
Cela réduira considérablement le nombre d'allocations et accélérera l'exécution du code.