Никогда не делайте предположение, что один метод быстрее другого - вы должны всегда измерять производительность обоих, а затем принимать решение.
Удивительно, но для меньшего числа итераций обычная конкатенация строк (результат + = строка) часто быстрее, чем использование построителя строк.
Если вы знаете, что число итераций всегда будет одинаковым (например, это всегда будет 50 итераций), то я бы посоветовал вам сделать некоторые измерения производительности, используя разные методы.
Если вы действительно хотите стать умным, выполните измерения производительности по количеству итераций, и вы можете найти «точку пересечения», где один метод быстрее другого, и жестко закодировать этот порог в методе:
if(iterations < 30)
{
CopyWithConcatenation();
}
else
{
CopyWithStringBuilder();
}
Точная точка пересечения производительности будет зависеть от конкретной детали вашего кода, и вы никогда не сможете узнать, что это такое, не сделав измерения производительности.
Чтобы еще больше усложнить ситуацию, StringBuilder имеет «аккуратное» управление памятью, которое объединяет строки (что создает больше временных экземпляров), так что это также может повлиять на общую производительность вне вашего строкового цикла (как в следующий раз, когда сборщик мусора) работает).
Дайте нам знать, как вы попали.