C++性能:在循环中使用getter或先将其保存到变量中

C++ performance: use getter in loop or save it to a variable first

本文关键字:保存 变量 性能 循环 C++ getter      更新时间:2023-10-16

我想知道使用getter在循环中一次又一次地获取相同的属性是否会影响性能。我应该先将其保存到变量中吗?请参阅以下示例:

直接使用getter:

for(int i=0; i<1000000; ++i) {
  print("Phone = %dn", myobj->getCity("Foo")->getPhone(i);
}



编辑:

循环约束呢?

for(int i=0; i<myobj->totalPhoneNum(); ++i) {...}

int totalPhoneNum = myobj->totalPhoneNum();
for(int i=0; i<totalPhoneNum; ++i) {...}

是的,你应该这样做。不管它是否对性能有任何影响,它在语义上都更清晰。通过先将其保存到变量中,可以表明它是循环不变量。

我建议您这样修改它,以检查NULL

City* city = myobj->getCity("Foo");
if(city != NULL)
{    
     for(int i=0; i<1000000; ++i) 
     {
       print("Phone = %dn", city ->getPhone(i);
     }
}

除非您没有在几个地方执行myobj->totalPhoneNum(),否则可以通过这种方式调用