後でコードを最適化するのではなく、最初から良いコードを書くことに興味があります。ベンチマークを提供できなくて申し訳ありませんが、現時点では動作するシナリオがありません。ご清聴ありがとうございました!
FunctionX よりも FunctionY を使用すると、どのようなパフォーマンスが向上しますか?
これについてはすでに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();
}