大佬教程收集整理的这篇文章主要介绍了c# – 使用.First()和.Where()之间的区别.第一个(),大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_770_5@myList.Where(item => item == 0).First();
还有这个:
@H_770_5@myList.First(item => item == 0);后者对我来说更有意义,因为它更短,但我似乎更频繁地看到顶级版本.
我创建了一个测试,看看遍历数组需要多长时间,我把搜索项放在数组的最后一个.我对每个测试进行了200次测试,每次测试@R_689_11262@000次迭代. Ticks的平均结果是:
First() = 2655969 Where().First() = 1455211
正如你所看到的Where().First()大约只占First()的一半时间.
我的基准测试应用程序如下:
class Program { private const int internalIterations = 1000; private const int externalIterations = 100; private const int dataSize = 100000; private const int search = dataSize - 1; private static readonly long[] resultsFirst = new long[externalIterations*2]; private static readonly long[] resultsWhereFirst = new long[externalIterations*2]; private static readonly int[] data = Enumerable.Range(0,dataSizE).ToArray(); static void Main(String[] args) { Stopwatch sw = new Stopwatch(); for (int i = 0; i < externalIterations; i++) { Console.WriteLine("Iteration {0} of {1}",i+1,externalIterations); sw.Restart(); First(); sw.Stop(); resultsFirst[i*2] = sw.ElapsedTicks; Console.WriteLine(" First : {0}",sw.ElapsedTicks); sw.Restart(); WhereFirst(); sw.Stop(); resultsWhereFirst[i*2] = sw.ElapsedTicks; Console.WriteLine("WhereFirst : {0}",sw.ElapsedTicks); sw.Restart(); WhereFirst(); sw.Stop(); resultsWhereFirst[(i*2)+1] = sw.ElapsedTicks; Console.WriteLine("WhereFirst : {0}",sw.ElapsedTicks); sw.Restart(); First(); sw.Stop(); resultsFirst[(i*2)+1] = sw.ElapsedTicks; Console.WriteLine(" First : {0}",sw.ElapsedTicks); } Console.WriteLine("Done!"); Console.WriteLine("Averages:"); Console.WriteLine(" First Average: {0:0.00}",resultsFirst.Average()); Console.WriteLine("WhereFirst Average: {0:0.00}",resultsWhereFirst.Average()); } private static void WhereFirst() { for (int i = 0; i < internalIterations; i++) { int item = data.Where(d => d == search).First(); } } private static void First() { for (int i = 0; i < internalIterations; i++) { int item = data.First(d => d == search); } } }
更新
我尝试使用List而不是数组作为数据源,发现它更慢.
数据创建行如下所示:
private static readonly List<int> data = Enumerable.Range(0,dataSizE).ToList();
最终的结果是:
First() = 3222609 Where().First() = 2124652
以上是大佬教程为你收集整理的c# – 使用.First()和.Where()之间的区别.第一个()全部内容,希望文章能够帮你解决c# – 使用.First()和.Where()之间的区别.第一个()所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。