java中多维数组探讨及发散思考
今天在stackoverflow上面看到一个帖子讨论说关于提高数组效率的问题,看了下他的问题,是关于一个四维数组的效率问题,四维数组类似这样子:
ushort[, , ,] map = new ushort[3000, 3000, 3, 3];
int [][][][] map = new int[3000][3000][3][3];
int [][][][] map2 = new int[3][3][3000][3000];
public class MutipleArray { public static void main(String[] args) throws InterruptedException { long t0 = System.currentTimeMillis(); int [][][][] map = new int[3000][3000][3][3]; for (int i = 0; i < 3000; i++) for (int j = 0; j < 3000; j++) for (int k = 0; k < 3; k++) for (int l = 0; l < 3; l++) map[i][j][k][l] = 45001; long t1 = System.currentTimeMillis(); System.out.println("Time for initializing the first Array:"+(t1-t0)+"ms"); int [][][][] map2 = new int[3][3][3000][3000]; for (int i = 0; i < 3; i++) for (int j = 0; j < 3; j++) for (int k = 0; k < 3000; k++) for (int l = 0; l < 3000; l++) map2[i][j][k][l] = 45001; long t2 = System.currentTimeMillis(); System.out.println("Time for initializing the second Array:"+(t2-t1)+"ms"); Thread.sleep(10000); }} Time for initializing the first Array:13570msTime for initializing the second Array:495ms
int [][][][] map = new int[3000][3000][3][3];
int [][][][] map = new int[3000*3000*3][3];
int [][][][] map2 = new int[3][3][3000][3000];
int [][][][] map2 = new int[3*3*3000][3000];