LINQ Count()方法是否比List<>.Count或更快或更慢Array.Length?
之前发布的一个问题让我思考.在空列表中使用时会Any()和Count()执行类似吗?
正如这里所解释的,两者都应该经历相同的步骤GetEnumerator()/MoveNext()/Dispose().
我在LINQPad上使用快速程序测试了这个:
static void Main()
{
var list = new List<int>();
Stopwatch stopwatch = new Stopwatch();
stopwatch.Start();
for (int i = 0; i < 10000; i++)
list.Any();
stopwatch.Stop();
Console.WriteLine("Time elapsed for Any() : {0}", stopwatch.Elapsed);
stopwatch = new Stopwatch();
stopwatch.Start();
for (int i = 0; i < 10000; i++)
list.Count();
stopwatch.Stop();
Console.WriteLine("Time elapsed for Count(): {0}", stopwatch.Elapsed);
}
Run Code Online (Sandbox Code Playgroud)
一般结果似乎表明Count()在这种情况下更快.这是为什么?
我不确定我的基准是否合适,如果不是,我会很感激.
编辑:我明白它在语义上会更有意义.我已经张贴在问题中的第一个链接显示的情况下它是有意义的做用Count(),直接原因是该值将被使用,因此这个问题.