В C # 6.0 появилась замечательная функция под названием Интерполяция строк, которая является отличной заменой запутанного синтаксиса String.Format, чтобы сделать их более читабельными.

Затем я осознал в некотором коде, что он делает его более читабельным, когда я использую этот синтаксис и для конкатенации строк.

Но потом я подумал: позвольте мне попробовать сравнить производительность этого и старого доброго String Builder, а также обычного String Concat, используя «+», чтобы убедиться, что он достаточно быстр.

Хотя String Interpolation действительно должен быть альтернативой String.Format, если вы собираетесь использовать его как String Concat или как String Builder для создания больших динамических строк, убедитесь, что этот синтаксис достаточно масштабируемый для ваших нужд.

Опять же, вы можете подумать, зачем кому-то использовать строковую интерполяцию для создания большой динамической строки, и я полностью согласен с этим, но верьте или нет, некоторые люди просто используют вещи только потому, что они новые

Помните парня, у которого был молоток и он пытался все построить из него? Я знаю некоторых из них! В этом случае «Интерполяция строк» ​​- это молоток…

Вот простой код, который у меня есть, с кучей «циклов for» по 100 000 итераций для каждого теста:

И я был очень удивлен, увидев, что интерполяция - самая медленная из всех.

Вот результат для 100000 итераций:

Требуется интерполяция строки: 4578 миллисекунд

Согласование строки с "+" заняло: 2090 миллисекунд.

Построитель строк занял 1 миллисекунду.

Итак, если у вас есть итерации или вы создаете большие строки, убедитесь, что вы не используете «красивый» синтаксис интерполяции строк.

ОБНОВЛЕНИЕ: Я получил много ответов на Reddit о Правильном тесте или Зачем вам вообще использовать String.Format для построения больших динамических строк, с которыми я согласен почти со всеми из них. Также многие люди отметили, что вывод правильный, хотя результаты могут быть не такими точными, с чем я снова согласен.

Хотя я попытаюсь использовать подходящий тест, чтобы получить более точный результат и опубликовать его здесь, основной вывод здесь таков:

Интерполяция строк (красивая версия String.Format) не подходит для построения больших блоков строк (с использованием String.Concat или String Builder) с большим количеством итераций, поэтому убедитесь, что вы ограничили ее использование для замены String.Format.

Ваше здоровье!