渐近最优两者都需要 O(n)(当然,n 等于列表的长度)时间来完成,但在第一个示例中列表将仅迭代一次,而在第二个示例中它将是迭代5次。
第一种方法:
foreach (var item in model)
{
fieldsSum.EnergyObjectCount += item.EnergyObjectCount;
fieldsSum.HourlyCapacityUtilization += item.HourlyCapacityUtilization;
fieldsSum.InstalledPower += item.InstalledPower;
fieldsSum.NumberOfGuarantees += item.NumberOfGuarantees;
fieldsSum.ProducedEnergy += item.ProducedEnergy;
}
第二种方式:
fieldsSum.EnergyObjectCount = model.Sum(item => item.EnergyObjectCount);
fieldsSum.HourlyCapacityUtilization = model.Sum(item => item.HourlyCapacityUtilization);
fieldsSum.InstalledPower = model.Sum(item => item.InstalledPower);
fieldsSum.NumberOfGuarantees = model.Sum(item => item.NumberOfGuarantees);
fieldsSum.ProducedEnergy = model.Sum(item => item.ProducedEnergy);
1)使用第二种方式被认为是“坏”做法吗?
2) 编译器在构建 .exe 时是否进行了任何优化?
最佳答案
1) Is it considered a 'bad' practise to use the second way?
是的,为什么你要对一个列表进行五次迭代,而一次迭代就可以实现同样的效果?
2) Does the compiler do any optimizations while building the .exe?
不,因为这里没有什么可以优化的(对于编译器)。至少我看不到。
关于c# - 尝试求和时 LINQ 与 foreach,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25645722/