我想知道是否使用getter在循环中反复获取相同的属性会有任何性能损失。我应该先将它保存到变量吗?请看下面的例子:
直接使用getter:
for(int i=0; i<1000000; ++i) {
print("Phone = %d\n", myobj->getCity("Foo")->getPhone(i);
}
修改
循环约束怎么样?
for(int i=0; i<myobj->totalPhoneNum(); ++i) {...}
或
int totalPhoneNum = myobj->totalPhoneNum();
for(int i=0; i<totalPhoneNum; ++i) {...}
答案 0 :(得分:7)
是的,你应该。无论它在性能上是否有任何不同,它在语义上都更加清晰。首先将它保存到变量,表明它是一个循环不变量。
答案 1 :(得分:1)
我建议您将其修改为检查NULL
City* city = myobj->getCity("Foo");
if(city != NULL)
{
for(int i=0; i<1000000; ++i)
{
print("Phone = %d\n", city ->getPhone(i);
}
}
除非你没有在几个地方做myobj-&gt; totalPhoneNum(),否则可以通过这种方式调用