C++性能:在循环中使用getter或先将其保存到变量中
C++ performance: use getter in loop or save it to a variable first
我想知道使用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(),否则可以通过这种方式调用
相关文章:
- 在全局变量中保存类的实例以重新创建类(创建"backup")
- 无法通过头文件保存变量的值
- 一个变量的输入值也会保存到另一个变量中
- 是否可以在C++变量中保存多种类型的枚举?
- 如何在 c++ 中创建一个可以将自身保存为变量的类?
- 可视化C++从文件中保存/读取多个变量
- 将数据从 SQLite 数据库保存到变量中
- C++我应该用什么来保存格式化为字符串变量(如sprintf())的文件
- 指向结构变量的指针未保存到eeprom
- (C++)for循环中的空初始语句是否保存所有编译器中变量的上一次初始化
- 让类方法为每个实例保存不同的静态变量
- 在没有外部文件的情况下在应用会话之间保存变量
- 将子类实例保存在父类型变量中并通过父变量使用 Child 函数?
- 从多个类中保存变量
- 从保存变量数据类型的数据结构中检索值,而不指定返回类型
- 在程序关闭后,是否可以在内部保存变量并读/写入
- 为什么不保存变量中的更改
- 如何使用Q设置保存变量
- 如何在RAM中安全地保存c++变量
- 需要帮助关于通过fstream保存变量,我需要使用向量