【发布时间】:2010-11-14 04:29:34
【问题描述】:
IEnumerable<T> 上的简单 LINQ 查询是轻量级还是重量级?它们与手动编写 for 或 foreach 循环相比如何?是否有关于何时更喜欢 LINQ 和手动搜索的一般准则?
例如:
var lowNums =
from n in numbers
where n < 5
select n;
相比:
List<int> lowNums = new List<int>();
foreach (int n in numbers)
{
if (n < 5)
{
lowNums.Add(n);
}
}
我正在和一位同事谈论 LINQ,他对使用它表示了一些犹豫。他猜想,为了支持 LINQ 可以做的一切,“幕后”可能会发生很多事情。
上述示例之间是否存在显着的性能差异?有没有关于集合上 LINQ 性能的好资源?简单的 Google 搜索 linq performance 会发现一些看似过时的文章。
【问题讨论】:
-
请记住,通过惰性评估您可能会获得性能提升,这取决于您在做什么。
-
感谢您提出这个问题,每次我将他的 LINQ 表达式重写为非 LINQ 逻辑等效项时,一位同事往往会挑起眉毛。 :P
-
@Danny 考虑可维护性和性能之间的平衡很重要。
标签: .net linq performance