bio*_*iox 3 c# linq performance lambda query-expressions
使用查询表达式而不是lambda表达式有什么意义?它不仅更慢,更冗长(见这里):
示例(来自上面的链接):
QE: var products = from p in northwind.Products where p.Category.CategoryName == "Beverages" select p;
LE: var products = northwind.Products.Where(p => p.Category.CategoryName == "Beverages");
Run Code Online (Sandbox Code Playgroud)
结果(来自上面的链接):
QE: 00:00:00.0019557, avg. 00:00:00.0004552
LE: 00:00:00.0000574, avg. 00:00:00.0000133
Run Code Online (Sandbox Code Playgroud)
为了便于阅读,是否真的值得将代码放慢34倍?
Sim*_*ead 10
它们最终是相同的.
您的文章测试显示速度非常快的原因是延迟执行.该代码实际上并没有在他们正在计时的区域做任何事情.它只会在.ToList()
被调用时执行某些操作或强制查询(lambda或其他)的其他方法.它可以快速解释查询(非常快速,查看您提供的时间),但在查询得到评估时,它实际上是循环数据的另一个野兽.
编辑:
我刚看完这篇文章.你会注意到,根据作者的说法,for
循环是所有3中最慢的(查询表达式,方法语法,for
循环).这是非常错误的.
基本for
循环如何比lambda慢几千倍?这没有意义.循环是迭代数据的最基本方式.lambda做什么比循环更令人难以置信?
......他们没有.他们还没有执行.看哪:推迟执行.
归档时间: |
|
查看次数: |
1457 次 |
最近记录: |