我有兴趣从一开始就编写好的代码,而不是稍后优化代码。对不起,没有提供基准我目前没有工作场景。感谢您的关注!微优化 - 访问递归成员时的编译优化
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();
}
你是否已经对该代码进行了简介,看看它是否真的很慢? –
“编写好的代码”和“优化”是两个完全不同的东西,并不是相互排斥的。 –