Sin*_*atr 5 c# linq performance
如果我有大量收藏并且我关心性能,我是否应该相信奇迹并使用
var min = Y.Min();
var max = Y.Max();
Run Code Online (Sandbox Code Playgroud)
或者我最好成为一名优秀的工程师并使用
var max = double.NegativeInfinity;
var min = double.PositiveInfinity;
foreach(var y in Y)
{
if(y > max)
max = y;
if(y < min)
min = y;
}
Run Code Online (Sandbox Code Playgroud)
Y是ICollection<double>,因为我需要Count和foreach。我很好奇类型是否正确,因为最小/最大,并且我需要从末尾迭代集合,所以会有
Y.OrderByDescending((o) => o)...
Run Code Online (Sandbox Code Playgroud)
Linq 没有“魔法”可以优化这样的查询。它所做的只是在集合顶部添加迭代器。Linq 旨在提高编码效率,而不是原始性能。
在某些情况下,Linq 查询的执行速度可能比 更快foreach,但这不是其中之一。 Min和Max是两个独立的操作,因此编译器必须“向前看”以查看正在执行哪些操作,以了解它们是否可以组合到单个迭代中。它没那么复杂。
| 归档时间: |
|
| 查看次数: |
1293 次 |
| 最近记录: |