Итак, я в первую очередь разработчик C # и Java, но полагаю, что этот вопрос может относиться к любым языкам программирования, использующим StringBuilder или его производные.
Хорошо, так что это более или менее известно, что конкатенация даже небольшое количество строк может быть основной причиной смерти производительности (хотя и это спорно). Мой вопрос: знает ли кто-нибудь о влиянии на производительность использования построителя строк в построителе строк. Чтобы прояснить, что я имею в виду, позвольте мне включить некоторый фиктивный код, который должен помочь проиллюстрировать мою точку зрения.
Также я понимаю, что вызов нескольких экземпляров StringBuilder, естественно, снижает производительность, но я не верю, что вызову его достаточно, чтобы вызвать какие-либо реальные проблемы с производительностью. (Это предположение также может быть неверным, любое мнение по этому поводу также было бы полезным)
public string StringToGet()
{
StringBuilder sb = new StringBuilder("Some Text to add");
sb.append("more text to add");
sb.append("more text to add");
sb.append("more text to add");
sb.append("more text to add");
sb.append("more text to add");
sb.append("more text to add");
sb.append("more text to add");
sb.append(MethodThatCreatesAnotherString());
sb.append("more text to add");
sb.append("more text to add");
sb.append("more text to add");
sb.append("more text to add");
sb.append("more text to add");
sb.append("more text to add");
sb.append("more text to add");
sb.append(MethodThatCreatesAnotherString());
sb.append("more text to add");
sb.append("more text to add");
sb.append("more text to add");
sb.append("more text to add");
sb.append("more text to add");
sb.append("more text to add");
sb.append("more text to add");
sb.append(MethodThatCreatesAnotherString());
//etc
return sb.toString();
}
private string MethodThatCreatesAnotherString()
{
StringBuilder sb = new StringBuilder("Other text");
sb.append("more text to add");
sb.append("more text to add");
sb.append("more text to add");
sb.append("more text to add");
sb.append("more text to add");
sb.append("more text to add");
sb.append("more text to add");
return sb.ToString();
}
Логика подсказывает мне, что это не должно быть проблемой, но что-то в этом подходе мне просто не кажется правильным. Может ли кто-нибудь пролить свет на следующие вопросы?
Мы будем очень признательны за любые консультации по этому поводу.