我有興趣從一開始就編寫好的代碼,而不是稍後優化代碼。對不起,沒有提供基準我目前沒有工作場景。感謝您的關注!微優化 - 訪問遞歸成員時的編譯優化
FunctionY使用FunctionX的性能提升是多少?
關於這個問題已經有很多關於stackoverflow的討論,但我在如下所示訪問子成員(遞歸)的情況下存在疑問。編譯器(比如VS2008)會將FunctionX優化成類似FunctionY的東西嗎?
void FunctionX(Obj * pObj)
{
pObj->MemberQ->MemberW->MemberA.function1();
pObj->MemberQ->MemberW->MemberA.function2();
pObj->MemberQ->MemberW->MemberB.function1();
pObj->MemberQ->MemberW->MemberB.function2();
..
pObj->MemberQ->MemberW->MemberZ.function1();
pObj->MemberQ->MemberW->MemberZ.function2();
}
void FunctionY(Obj * pObj)
{
W * localPtr = pObj->MemberQ->MemberW;
localPtr->MemberA.function1();
localPtr->MemberA.function2();
localPtr->MemberB.function1();
localPtr->MemberB.function2();
...
localPtr->MemberZ.function1();
localPtr->MemberZ.function2();
}
你是否已經對該代碼進行了簡介,看看它是否真的很慢? –
「編寫好的代碼」和「優化」是兩個完全不同的東西,並不是相互排斥的。 –