Sobes.tech
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.