Вопрос о снижении нагрузки на GC при работе с рунами.
Используйте предварительное выделение памяти (make([]rune, 0, capacity)) или strings.Builder.
Способы оптимизации:
Предварительный аллокация слайса:
runes := make([]rune, 0, expectedLength) // Избегаем переаллокацийstrings.Builder для строк:
var builder strings.Builder
builder.Grow(expectedLength) // Резервируем памятьПример:
func runesToString(runes []rune) string {
builder := strings.Builder{}
builder.Grow(len(runes))
for _, r := range runes {
builder.WriteRune(r)
}
return builder.String()
}