我在測試中發現lambda更快。複製粘貼MSDN秒錶代碼,並用迭代List的兩個版本來裝飾它。(我也改變了首先進行測試的順序,並且獲得了相同的計時)。基於Linq的lambda迭代更快。
Lambda 00:00:00.49
foreach 00:00:00.58
和代碼..
var list = Enumerable.Range(0, 100000000).ToArray();
var total = 0;
var stopWatch = new Stopwatch();
stopWatch.Start();
Array.ForEach(list, x => total += x);
stopWatch.Stop();
TimeSpan ts = stopWatch.Elapsed;
string elapsedTime = String.Format("{0:00}:{1:00}:{2:00}.{3:00}",
ts.Hours, ts.Minutes, ts.Seconds,
ts.Milliseconds/10);
Console.WriteLine("RunTime " + elapsedTime);
stopWatch = new Stopwatch();
stopWatch.Start();
foreach (var i in list)
{
total += i;
}
stopWatch.Stop();
// Get the elapsed time as a TimeSpan value.
ts = stopWatch.Elapsed;
// Format and display the TimeSpan value.
elapsedTime = String.Format("{0:00}:{1:00}:{2:00}.{3:00}",
ts.Hours, ts.Minutes, ts.Seconds,
ts.Milliseconds/10);
Console.WriteLine("RunTime " + elapsedTime);
件事,你叫實際上拉姆達的foreach落實懶惰的評價,所以有很多額外的代碼。 – vittore
顯示你的測試用例。 –
我發現對面在我的測試 –