親愛なる-他の返信の1つを読んだ後、操作の順序を逆にしてみました-最初に連結を実行し、次にString.Format ...
Bill Gates
Console.WriteLine(p.FirstName + " " + p.LastName); took: 8ms - 30488 ticks
Bill Gates
Console.WriteLine("{0} {1}", p.FirstName, p.LastName); took: 0ms - 182 ticks
したがって、操作の順序によって大きな違いが生じます。つまり、最初の操作は常にはるかに遅くなります。
以下は、操作が複数回完了した実行の結果です。順序を変更してみましたが、最初の結果が無視されると、通常は同じルールに従います。
Bill Gates
Console.WriteLine(FirstName + " " + LastName); took: 5ms - 20335 ticks
Bill Gates
Console.WriteLine(FirstName + " " + LastName); took: 0ms - 156 ticks
Bill Gates
Console.WriteLine(FirstName + " " + LastName); took: 0ms - 122 ticks
Bill Gates
Console.WriteLine("{0} {1}", FirstName, LastName); took: 0ms - 181 ticks
Bill Gates
Console.WriteLine("{0} {1}", FirstName, LastName); took: 0ms - 122 ticks
Bill Gates
String.Concat(FirstName, " ", LastName); took: 0ms - 142 ticks
Bill Gates
String.Concat(FirstName, " ", LastName); took: 0ms - 117 ticks
ご覧のとおり、同じメソッド (コードを 3 つのメソッドにリファクタリングしました) の後続の実行は、段階的に高速化されています。最速は Console.WriteLine(String.Concat(...)) メソッドで、通常の連結、フォーマットされた操作が続きます。
起動時の最初の遅延は、最初の操作がすべての時間を元に戻す前に Console.Writeline("Start!") を配置するため、コンソール ストリームの初期化である可能性があります。