Эффективность индексированных заполнителей

#c# #performance

#c# #Производительность

Вопрос:

Есть несколько мест, где вы можете использовать синтаксис индексированного заполнителя в C #, ie.

 // Assume some object is available with 2 string properties
Console.Writeline("Hello {0}, today is {1}", obj.Username, obj.DayOfWeek);
  

Является ли это более эффективным, чем использование оператора конкатенации строк для построения строки? ie.

 Console.Writeline("Hello "   obj.Username   " today is "   obj.DayOfWeek);
  

Очевидно, что {0} ... {n} синтаксис чище, если вы делаете что-то сложное — но какой код более эффективен (меньший объем памяти и / или время выполнения?)

Ответ №1:

Ну, первая версия должна проанализировать строку и интерпретировать ее, прежде чем выполнять фактическую конкатенацию строк. Таким образом, можно было бы ожидать, что первый метод будет медленнее и потенциально более ресурсоемким, не так ли?

Но если вы не выполняете огромные объемы обработки строк, это вряд ли будет проблемой.

Ответ №2:

Не думайте об этом, используйте форматирующий. Если вы беспокоитесь о памяти / времени выполнения с помощью такого метода, у вас возникают другие проблемы.

Комментарии:

1. Я понимаю, что глупо беспокоиться об этом в контексте одной строки кода, но что, если вам нужно выполнить некоторые строковые операции над миллионами строк?

2. В таком случае используйте StringBuilder .