假设您有一个名为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();
在性能相当重要的应用程序中,第一组函数的开销是否非常重要?现代编译器能够优化这些东西吗?
我意识到分析会在我的案例中回答我的问题,但我在这里寻找一个经验法则。将现有数据存储在局部变量中而不是重新检索它有多么有用,或者这种重新检索通常是由现代编译器优化的?
答案 0 :(得分:0)
你担心错误的事情,并自己回答了这个问题。如果它是瓶颈,请对其进行分析并进行优化。
无论如何:Inst()可能会被内联,因此没有函数调用开销,因为它是静态的,结果不依赖于任何明显的外部参数,编译器可以完全优化它。