挿入文字列の速度について
.NET 5のコンソールにて検証してみた。
結論としては文字列連結と大差ない。
using System; using System.Diagnostics; using System.Text; namespace ConsoleApp2 { class Program { static void Main(string[] args) { int loop = 10000000; Stopwatch sw = new Stopwatch(); GC.Collect(); string str1 = DateTime.Today.AddDays(7).ToString(); ; string str2 = DateTime.Now.ToString("yyyyMMdd"); string str3 = DateTime.UtcNow.AddDays(2).ToShortDateString(); string date = DateTime.Now.ToString(); string[] st1 = new string[loop]; sw.Start(); for (int i = 0; i < loop; i++) { st1[i] = str1 + str2 + str3 + date; } sw.Stop(); var Plus = sw.ElapsedMilliseconds; sw.Reset(); GC.Collect(); string[] st2 = new string[loop]; sw.Start(); for (int i = 0; i < loop; i++) { st2[i] = $"{str1}{str2}{str3}{date}"; } sw.Stop(); var interpolation = sw.ElapsedMilliseconds; sw.Reset(); GC.Collect(); string[] st3 = new string[loop]; sw.Start(); StringBuilder sb = new StringBuilder(); for (int i = 0; i < loop; i++) { sb.Clear(); sb.Append(str1); sb.Append(str2); sb.Append(str3); sb.Append(date); st3[i] = sb.ToString(); } sw.Stop(); var sbt = sw.ElapsedMilliseconds; Console.WriteLine($"Plus : {Plus}"); Console.WriteLine($"interpolation : {interpolation}"); Console.WriteLine($"StringBuilder : {sbt}"); } } }
実行結果
Plus : 1630 interpolation : 1612 StringBuilder : 1330
見た目重視なら挿入文字列。
速度重視ならStringBuilder使っておけばよいのでは。