【发布时间】:2008-10-26 20:08:15
【问题描述】:
类访问成员变量还是局部变量更有效?例如,假设您有一个(回调)方法,其唯一职责是接收数据,对其执行计算,然后将其传递给其他类。在性能方面,拥有一个方法在接收数据时填充的成员变量列表是否更有意义?还是每次调用回调方法时都声明局部变量?
假设这个方法每秒会被调用数百次......
如果我不清楚,这里有一些简单的例子:
// use local variables
class thisClass {
public:
void callback( msg& msg )
{
int varA;
double varB;
std::string varC;
varA = msg.getInt();
varB = msg.getDouble();
varC = msg.getString();
// do a bunch of calculations
}
};
// use member variables
class thisClass {
public:
void callback( msg& msg )
{
m_varA = msg.getInt();
m_varB = msg.getDouble();
m_varC = msg.getString();
// do a bunch of calculations
}
private:
int m_varA;
double m_varB;
std::string m_varC;
};
【问题讨论】:
-
任何差异几乎肯定会被首先检索值的成本所掩盖。每秒几百次也不算什么。 call 您的函数的堆栈帧的成本可能会使您显示的任何内容相形见绌。闻起来像过早的优化。
标签: c++ performance