Senior
// Bu kodda nima xato? Uni qanday yaxshilash mumkin? func fn() { str := "" for i := 0; i < 100000; i++ { str += fmt.Sprintf("%d", i) } fmt.Println(str) }
sobes.tech AI
AIdan javob
Бу коднинг муаммоси шундаки, str сўзлари циклда += оператори ёрдамида қўшилади. Goда сўзлар ўзгартирилмайди, шунинг учун ҳар бир итерацияда янги сўз яратилади, бу эса кўплаб ажратишларга олиб келади ва ишлаш тезлигини пасайтиради.
Самарали сўзлар йиғиш учун strings.Builder ёки bytes.Bufferдан фойдаланиш маъқул:
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())
}
Бу код ажратишлар сонини сезиларли даражада kamaytiradi ва кодни тезлаштиради.