在我的一个类方法中,我声明了几个这样的局部变量:
int findClosestPoint(double rRadius)
{
int iXIndexMult, iYIndexMult, iZIndexMult, iVoxelX, iVoxelY, iVoxelZ, iPIndexVoxel, iV, iV_From, iV_To;
double rDist, rDX, rDY, rDZ;
double rRadius2 = rRadius*rRadius;
double rMinDist = rRadius2;
int iFoundVertex = -1;
// do stuff
retrun iFoundVertex;
}
我调用了这个方法数千次,所以我认为将变量声明从方法体移动到类是个好主意,所以我收到了类似的东西:
int findClosestPoint(double rRadius)
{
rRadius2 = rRadius*rRadius;
rMinDist = rRadius2;
iFoundVertex = -1;
// do stuff
retrun iFoundVertex;
}
我很惊讶,因为这个操作的结果是我的程序性能显着下降。
任何人都可以向我解释为什么会这样吗?
答案 0 :(得分:0)
您将该上下文从本地堆栈/寄存器重新定位到(可能)堆内存。堆需要更多时间来访问堆栈。
答案 1 :(得分:0)
始终保持变量范围尽可能小。这不仅为编译器提供了更多优化选项,还使您的代码更具可读性并避免副作用。
究竟是什么原因导致性能下降取决于您的编译器以及您在ORDER BY brand
部分中的功能。