Подскажите пожалуйста, читал в какой-то книге что приминение StringBuilder намного быстрее обычного конката текста, например: 1) string text = "this" + "is" + "my" + "text."; 2) StringBuilder stringBuilder = new StringBuilder(); stringBuilder.AppendFormat("{0}{1}{2}{3}", new object[] { "this ", "is ", "my ", "text." }); По мнению авторов книги второй способ выполнится быстрее, это так?
быстрее будет вот это: Code: var sb = new StringBuiilder(); sb.Append("this"); sb.Append("is"); sb.Append("my"); sb.Append("text"); var text = sb.ToString(); вариант Code: stringBuilder.AppendFormat("{0}{1}{2}{3}", new object[] { "this ", "is ", "my ", "text." }); явно внесет накладные расходы хотя бы на разбор форматной строки. По скорости он будет примерно равен такому коду: Code: var text = string.Format("{0}{1}{2}{3}", new object[] { "this ", "is ", "my ", "text." }); дело в том, что string.Format() по сути обертка над StringBuilder.AppendFormat(). вообще, дело тут не только в скорости. Строки в .Net иммутабельны, поэтому любая конкатерация на самом деле создает новую строку. поэтому без использования StringBuilder такие конкатерации будут создавать много лишних строк, а это - лишняя нагрузка на сборщик мусора. С другой стороны, если этот код вызывается только один раз (настройки, например, прочитать), тогда в принципе это не критично