声明方法内的变量与类性能

时间:2016-03-07 15:13:39

标签: c++

在我的一个类方法中,我声明了几个这样的局部变量:

    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;
    }

我很惊讶,因为这个操作的结果是我的程序性能显着下降。

任何人都可以向我解释为什么会这样吗?

2 个答案:

答案 0 :(得分:0)

您将该上下文从本地堆栈/寄存器重新定位到(可能)堆内存。堆需要更多时间来访问堆栈。

答案 1 :(得分:0)

始终保持变量范围尽可能小。这不仅为编译器提供了更多优化选项,还使您的代码更具可读性并避免副作用。

究竟是什么原因导致性能下降取决于您的编译器以及您在ORDER BY brand部分中的功能。