考虑这种情况:
class Test {
public:
Test() : _var{5} {}
inline int getVar() {
return _var;
}
private:
int _var;
}
void func(Test& t) {
int var = t.getVar();
int a = 1 + var;
int b = 2 + var;
...
int z = 26 + var;
}
int main() {
Test t;
for (int i = 0; i < 1000000; ++i) {
func(t);
}
}
虽然在40年代期间对类似的执行进行了分析,但我发现单独的getVar()调用花费了大约0.8秒,这对于访问int来说似乎很大。
但是,通过将我的_var设置为public并直接访问它(t._var)而不是使用局部变量和Test的getter,它甚至更慢。
是否有一个神奇的c ++解决方案几乎可以即时访问“_var”?
答案 0 :(得分:-1)
在类定义中定义的方法始终是内联。请注意, inline 并不一定意味着对该方法的调用将替换为方法正文,并且具有look。
您的时间测量很可能是错误的,或者您没有进行优化,编译器也没有优化它的地狱。