LINQ vs foreach试图总结

时间:2014-09-03 13:31:01

标签: 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 个答案:

答案 0 :(得分:3)

  

1)使用第二种方式是否被视为“不良”做法?

是的,为什么你会在列表中迭代五次,而你可以通过一次迭代实现同样的事情?

  

2)编译器在构建.exe?

时是否进行了任何优化

不,因为这里没有任何优化(对于编译器)。至少我看不到任何。