Sobes.tech
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 ва кодни тезлаштиради.