for ループが foreach ループよりも高速かどうかを調べようとしていて、System.Diagnostics クラスを使用してタスクの時間を計っていました。テストを実行しているときに、最初に配置したループは常に最後のループよりも遅く実行されることに気付きました。なぜこれが起こっているのか誰か教えてもらえますか?私のコードは以下の通りです:
using System;
using System.Diagnostics;
namespace cool {
class Program {
static void Main(string[] args) {
int[] x = new int[] { 3, 6, 9, 12 };
int[] y = new int[] { 3, 6, 9, 12 };
DateTime startTime = DateTime.Now;
for (int i = 0; i < 4; i++) {
Console.WriteLine(x[i]);
}
TimeSpan elapsedTime = DateTime.Now - startTime;
DateTime startTime2 = DateTime.Now;
foreach (var item in y) {
Console.WriteLine(item);
}
TimeSpan elapsedTime2 = DateTime.Now - startTime2;
Console.WriteLine("\nSummary");
Console.WriteLine("--------------------------\n");
Console.WriteLine("for:\t{0}\nforeach:\t{1}", elapsedTime, elapsedTime2);
Console.ReadKey();
}
}
}
出力は次のとおりです。
for: 00:00:00.0175781
foreach: 00:00:00.0009766