작동중인 메커니즘이 100 % 확실하지 않으므로 추가 설명을 위해 여기에 게시하기로 결정했습니다.Java Array Efficiency
Java (Java가 있어야 함)로 많은 양의 데이터를 처리해야하는 프로젝트를 수행하고 있습니다. 가능한 한 효율적 이길 바랍니다. 효율적으로 말하면 메모리 및 속도 계산이 먼저 이루어져야하며 가독성이 두 번째가되어야 함을 의미합니다.
지금 내 데이터를 저장하는 두 가지 방법이있다 : MyObject
1) MyObject[][] V = new MyObject[m][n]
중 하나 개 배열을 생성 또는 INT의 두 배열을 만들 :
2) int[][] V = new int[m][n]
3) int[][] P = new int[m][n]
은 분명히 MyObject
적어도 두 개의 필드와 몇 가지 방법을 포함 . 이제 MyObject
배열을 반복하면서 값을 할당하기 위해 new
을 호출해야합니다. 그렇지 않으면 null 포인터 예외가 발생합니다. 이것은 라인 1의 new
이 충분하지 않다는 것을 의미합니다. 배열이 Java의 객체이기 때문에 인수가 더 복잡하여 P[i][j]=n
보다 비용이 많이 듭니까?
I 생각 예 V는 [I]은 [J]를 새을 MyObject = (오브젝트 1, object2); P [i] [j] = n보다 비싸다. . 그러나 나는 당신이 이것에 대해 너무 진지해야한다고 생각하지 않는다. –
코딩을 시작하기 전에 다른 메모리 레이아웃의 효율성 파악 *이 절대로 작동하지 않습니다. 어느 것이 든, 그리고 그 다음에는 두 가지 방법 중 하나를 코딩해야합니다. 너무 느린 경우 속도가 느려지는지 확인하십시오. 기회는, 그것은 메모리에있는 당신의 물건의 배치와 관련이 없을 것입니다. – dasblinkenlight
관련 : n이 m보다 상당히 크거나 작 으면 http://stackoverflow.com/questions/15339296/memory-usage-of-multidimensional-array-does-the-order-makes-difference – assylias