我第一次運行下面的代碼:爲什麼LINQ需要更多的時間來執行而不是foreach?
var stringList = new[]{"A","BB","CCC","DDDD"};
var dictionary = new Dictionary<int, string>();
var stopwatch = new Stopwatch();
stopwatch.Start();
foreach (var s in stringList)
{
dictionary.Add(s.Length,s);
}
stopwatch.Stop();
Console.WriteLine(stopwatch.Elapsed);
Console.ReadKey();
執行時間爲:00:00:00.0000205
然後我跑到下面的代碼...
var stringList = new[]{"A","BB","CCC","DDDD"};
var stopwatch = new Stopwatch();
stopwatch.Start();
var dictionary = stringList.ToDictionary(s => s.Length);
stopwatch.Stop();
Console.WriteLine(stopwatch.Elapsed);
Console.ReadKey();
執行時間爲:00 :00:00.0037431
這是否證明foreach比LINQ好?
不,它證明了寫性能測試並不像你的情況顯示非易事。 – I4V 2013-04-25 08:12:34
@Atish,運行這個測試100000次,並做平均。 ,然後在帶有100000個隨機字符串的字符串列表上運行這幾十次併發布結果 – Nahum 2013-04-25 08:12:50
如果您要執行微基準測試,您應該使用較大的數據集來抵消預熱成本。 – 2013-04-25 08:13:12