2015-01-13 50 views
0

我有一個可以有多個輪廓和線段的形狀。 我主要儲存如someArray[theContour][theSegment]的信息。 我想存儲每個段的邊界,這是2d中的4個元素和3d中的6個數組的數組。 所以它會像:bounding[theContour][theSegment][4]創建多維陣列的內存效率步驟

目前我只創建所需的零件時GET方法的調用:

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

對於建模來說不是一個壞習慣嗎?我曾嘗試使用多維數組來建模遊戲以提高性能,但過了一段時間後,由於代碼混亂,我回到了OOP。 – alizelzele

回答

0

我想,你會更頻繁地調用calculateBounding方法。如果您的細分受衆羣會在更長時間內創建,則可能會出現問題。這可能是一個緩存等問題,這意味着你的細分將分散在內存中。在高度優化的環境中,這是一個瓶頸,所以它取決於您的應用程序上下文,否則一次創建它。