在处理一个项目时,我遇到了以下代码,它引发了性能标志。
foreach (var sample in List.Where(x => !x.Value.Equals("Not Reviewed")))
{
//do other work here
count++;
}
我决定运行几个快速测试,将原始循环与以下循环进行比较:
foreach (var sample in List)
{
if (!sample.Value.Equals("Not Reviewed"))
{
//do other work here
count++;
}
}
并把这个循环也扔进去看看会发生什么:
var tempList = List.Where(x => !x.Value.Equals("Not Reviewed"));
foreach (var sample in tempList)
{
//do other work here
count++;
}
我还以 3 种不同的方式填充了原始列表:50-50(所以 50% 的值是“未审查”,其余的是其他值)、10-90 和 90-10。这些是我的结果,第一个和最后一个循环基本相同,但第二个循环要快得多,尤其是在 10-90 的情况下。为什么?我一直认为Lambda
有很好的表现。
编辑
count++
实际上并不是循环内部的内容,我只是在此处添加了用于演示目的,我想我应该使用“//在这里做点什么”
编辑 2
每个运行 1000 次的结果: