Go में कुशल स्ट्रिंग कॉन्केटनेशन: स्ट्रिंग्स को सही और तेज़ी से जोड़ना
सभी को नमस्ते! मैंने अभी-अभी Go सीखना शुरू किया है और स्ट्रिंग्स के साथ काम करते समय प्रदर्शन की समस्या का सामना किया। मुझे कई टुकड़ों से एक बड़ी HTML रिपोर्ट बनानी है। शुरू में मैंने बस `+` ऑपरेटर का उपयोग किया:
```go
var result string
for i := 0; i < 100000; i++ {
result += fmt.Sprintf("
%d
", i)
}
```
यह कोड बहुत धीमा चलता है और बहुत अधिक मेमोरी खपत करता है। मैंने पढ़ा है कि Go में स्ट्रिंग्स अपरिवर्तनीय (immutable) हैं, और प्रत्येक `+` ऑपरेशन पुराने डेटा को कॉपी करके एक नई स्ट्रिंग बनाता है। 100,000 पुनरावृत्तियों के लिए, इससे भारी ओवरहेड होता है।
मैंने `strings.Join` का उपयोग करने की कोशिश की, लेकिन यह केवल स्ट्रिंग स्लाइस के साथ काम करता है, जबकि मुझे लूप में डायनामिक रूप से एलिमेंट जोड़ने की आवश्यकता है। मैंने `bytes.Buffer` और `strings.Builder` के बारे में भी सुना है। Go के लिए इनमें से कौन सा तरीका सबसे सही और कुशल है? मेरे लिए न केवल कोड को तेज़ करना महत्वपूर्ण है, बल्कि मेमोरी आवंटन और गार्बेज कलेक्टर के काम को भी कम करना है।
मैं बेंचमार्क के साथ विशिष्ट उदाहरणों या कम से कम यह समझाने के लिए आभारी रहूंगा कि क्यों।