与在本地存储相比,检索对象的开销

时间:2010-07-14 20:25:27

标签: c++ static performance

假设您有一个名为Inst()的私有静态方法,它允许类在其静态方法中检索应用程序中的单个实例。也许Inst()被定义为......

return App::GetApp()->CurrentState()->MyClass(); // Inst returns a reference

比较这个...

// I prefer this
Inst().DoThis();
Inst().DoThat();
Inst().DoFoo();

为...

MyClass inst = Inst();
inst.DoThis();
inst.DoThat();
inst.DoFoo();

在性能相当重要的应用程序中,第一组函数的开销是否非常重要?现代编译器能够优化这些东西吗?

我意识到分析会在我的案例中回答我的问题,但我在这里寻找一个经验法则。将现有数据存储在局部变量中而不是重新检索它有多么有用,或者这种重新检索通常是由现代编译器优化的?

1 个答案:

答案 0 :(得分:0)

你担心错误的事情,并自己回答了这个问题。如果它是瓶颈,请对其进行分析并进行优化。

无论如何:Inst()可能会被内联,因此没有函数调用开销,因为它是静态的,结果不依赖于任何明显的外部参数,编译器可以完全优化它。