for(int i=0;i<someDomain.count;i++)
{
if(someDomain.someValue != Convert.ToInt32(DomainConstants.PaymentPending))
{
Dosomething...
}
}
如果计数更多,建议在循环开始之前为“DomainConstants.PaymentPending”声明一个整数,否则不会导致任何性能损失。有时计数可能会达到100。
答案 0 :(得分:3)
转换常量值一次可能会改善此循环的性能。
话虽如此,这不太可能是性能瓶颈。在您分析应用程序并发现这是一个实际问题之前,我不一定会担心这种级别的微优化。
相反,我会专注于使您的代码尽可能最易读。就个人而言,我认为在这种情况下,使变量更具可读性和可维护性。我会把上面的内容写成:
// Why is this the wrong type in the first place?
var paymentPending = Convert.ToInt32(DomainConstants.PaymentPending);
foreach(var domain in someDomains.Where(sd => sd.Value != paymentPending)
{
// Do something with domain
答案 1 :(得分:2)
一般来说,你的关注是完全有效的,你的思维方式是正确的,因为计算一次然后“缓存”它是一种提高程序性能的有效方法。但是,它通常适用于计算量大且复杂的事物,例如从文件解析的结构,动态生成的图像等。
简单的数字解析不会导致任何容易观察到的性能瓶颈,因此将其移出循环不会给出任何可观察到的改进,至少如果循环重复次数与您声明的顺序相同。
在这个特定的例子中,你应该或多或少地追求可读性。如果你参与了一个有执行时间要求的项目,那么你很可能已经知道了许多实现性能提升的技术(其中一些技术将比相关的技术更有效)以及如何应用每个技术之一。