我第一次运行下面的代码:为什么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