Строковый вывод: форматировать или объединять в С#?
Попробуйте этот код.
Это слегка c#.net измененная версия вашего empty-string кода.
- Я удалил Console.WriteLine, поскольку он, вероятно, на несколько порядков медленнее, чем то, что я пытаюсь измерить.
- Я запускаю секундомер перед циклом и останавливаю его сразу после него, таким образом, я не теряю точность, если для выполнения функции требуется, например, 26,4 тика.
- Вы неправильно разделили результат на несколько итераций. Посмотрите, что произойдет, если у вас есть 1000 миллисекунд и 100 миллисекунд. В обоих случаях вы получите 0 мс после деления на 1 000 000.
Код:
Stopwatch s = new Stopwatch();
var p = new { FirstName = "Bill", LastName = "Gates" };
int n = 1000000;
long fElapsedMilliseconds = 0, fElapsedTicks = 0, cElapsedMilliseconds = 0, cElapsedTicks = 0;
string result;
s.Start();
for (var i = 0; i < n; i++)
result = (p.FirstName + " " + p.LastName);
s.Stop();
cElapsedMilliseconds = s.ElapsedMilliseconds;
cElapsedTicks = s.ElapsedTicks;
s.Reset();
s.Start();
for (var i = 0; i < n; i++)
result = string.Format("{0} {1}", p.FirstName, p.LastName);
s.Stop();
fElapsedMilliseconds = s.ElapsedMilliseconds;
fElapsedTicks = s.ElapsedTicks;
s.Reset();
Console.Clear();
Console.WriteLine(n.ToString()+" x result = string.Format(\"{0} {1}\", p.FirstName, p.LastName); took: " + (fElapsedMilliseconds) + "ms - " + (fElapsedTicks) + " ticks");
Console.WriteLine(n.ToString() + " x result = (p.FirstName + \" \" + p.LastName); took: " + (cElapsedMilliseconds) + "ms - " + (cElapsedTicks) + " ticks");
Thread.Sleep(4000);
Вот мои результаты:
1000000 string.format x result = string.Format("{0} {1}", p.FirstName, p.LastName); заняло: 618 c-sharp мс - 2213706 тиков
1000000 c-sharp x результат = (p.FirstName csharp + " " + p.LastName); заняло: 166 strings мс - 595610 тиков
c#
string
coding-style
string.format
2021-12-02T21:04:56+00:00
2022-10-27T02:40:44+00:00
Bushiido
Вопросы с похожей тематикой, как у вопроса:
Строковый вывод: форматировать или объединять в С#?
Предупреждение о файлах Cookies
Мы используем файлы cookies для улучшения работы сайта. Оставаясь на нашем сайте, вы соглашаетесь с условиями использования файлов cookies. Чтобы ознакомиться с нашими Положениями о конфиденциальности и об использовании файлов cookie, нажмите здесь.