Vac*_*ano 5 c# linq performance
这是:
Box boxToFind = AllBoxes.FirstOrDefault(box => box.BoxNumber == boxToMatchTo.BagNumber);
Run Code Online (Sandbox Code Playgroud)
比这更快或更慢:
Box boxToFind ;
foreach (Box box in AllBoxes)
{
if (box.BoxNumber == boxToMatchTo.BoxNumber)
{
boxToFind = box;
}
}
Run Code Online (Sandbox Code Playgroud)
两者都给了我正在寻找的结果(boxToFind
).这将在我需要表现良好的移动设备上运行.
它应该大致相同,除了你需要调用First
(或匹配你的代码Last
),而不是Where
.
通话Where
会给你一套匹配的项目(一IEnumerable<Box>
); 你只想要一个匹配的项目.
通常,在使用LINQ时,您需要了解延迟执行.在您的特定情况下,它是无关紧要的,因为您获得了单个项目.
除非您通过性能分析确定此特定循环是性能瓶颈,否则差异并不重要.
如果分析确实发现它是一个问题,那么您将需要查看备用存储.将数据存储在字典中,该字典提供比循环数组更快的查找.