内存效率逐步创建多维数组

时间:2015-01-13 13:37:37

标签: java performance multidimensional-array

我的形状可以有多个轮廓和线段。 我主要存储someArray[theContour][theSegment]之类的信息。 我想存储每个段的边界,这是2d中的4个元素和3d中的6个元素的数组。 所以它就像:bounding[theContour][theSegment][4]

目前我只在方法被调用时创建所需的部分:

 public void calculateBounding(int contour, int segment) {

        if (boundingContourSegment == null) {
            boundingContourSegment = new float[nOfContours][][];
        }
        if (boundingContourSegment[contour] == null) {
            boundingContourSegment[contour] = new float[nOfSegments[contour]][];
        }
        if (boundingContourSegment[contour][segment] == null) {
            boundingContourSegment[contour][segment] = new float[size];
        }

我的问题是,这对性能有害吗?一次创建整个数组(或者至少是特定轮廓的所有部分)是否更好?

1 个答案:

答案 0 :(得分:0)

我想,你会更频繁地调用你的calculateBounding方法。如果您的细分受众群将在较长时间内创建,则可能会出现问题。这可能是缓存等问题,这意味着您的细分将遍布内存。在高度优化的环境中,这是一个瓶颈,因此它取决于您的应用程序上下文,否则立即创建它。