因此,例如,其中這些是更快:方法鏈接緩慢C++?
if(object.GetMemberX().IsSomething())
{
Store(object.GetMemberX());
object.GetMemberX().FlagSomething();
}
或
typeX x = object.GetMemberX();
if(typeX.IsSomething())
{
Store(x);
x.FlagSomething();
}
我想像,如果GetMemberX()
返回一個指針或在第一個例子中然後參考,編譯器不能優化將兩個調用放在一起,因爲它不能保證每次調用返回的指針/引用都是相同的?
但在第二個例子中,我存儲它?
如果這是真的,它只適用於返回指針/引用的方法嗎?如果我的方法按價值回報,它們會受益於不同的電話嗎?
猜測優化器可以做什麼和不能做什麼通常很難做...像取消引用一個函數這樣的東西不應該花很多時間。 。如果你處於某種性能至關重要的緊密循環中,那麼你應該分析並查看正在花費的時間。 –
在對你很重要的環境中對其進行基準測試。 – OMGtechy
IsSomething是一個靜態函數嗎? – BDL