c# - 尝试求和时 LINQ 与 foreach

标签 c# .net optimization

渐近最优两者都需要 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/

相关文章:

c# - Sharepoint 自定义字段

c# - 根据构建常量修改配置文件

慢查询的MYSQL查询优化

c# - 当 JIT 不能优化时,什么静态编译器可以优化?

c# - 使用 LINQ 按类型合并序列

c# - 如何更改报告的 "document map"根标签?

c# - 我可以用什么来确定相似的词或关键词?

c# - 蛮力 7z 密码测试

.net - eventregister.exe 无法加载 Azure ServiceRuntime

python - 如果我的目标函数是非线性(也是指数解释)函数,我应该使用什么求解器? python 壁虎