.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使っておけばよいのでは。