use*_*388 0 java arrays performance 2d coordinates
使用Java时,使用多维数组时似乎会出现大幅减速: -
int[] oneDArray=new int[3000*3000];
int[][] twoDArray=new int[3000][3000];
for(int x=0;x<oneDArray.length;x++){
oneDArray[x]=x;
}
for(int x=0;x<twoDArray.length;x++){
for(int y=0;y<twoDArray[0].length;y++){
twoDArray[x][y]=x;
}
}
Run Code Online (Sandbox Code Playgroud)
结果是:1d需要4 ms,而2d需要15ms,这在执行图形功能时是相当大的延迟.
如何用Java中的单个数组表示二维坐标?
int w = 3000;
int h = 3000;
int[] array = new int[w * h];
/* Here is how to calculate the index for a specific (x, y) */
int index = y * w + x;
array[index] = 5;
Run Code Online (Sandbox Code Playgroud)