为什么初始化数组的时间不同

nku*_*har 5 java arrays initialization

为什么

        long t = System.currentTimeMillis();
        int size = 3333333;
        int[][][] arr = new int[size][6][2];
//        int[][][] arr= new int[2][6][size];
        pr(System.currentTimeMillis() - t );
Run Code Online (Sandbox Code Playgroud)

打印5000 ms 但是

        long t = System.currentTimeMillis();
        int size = 3333333;
//        int[][][] arr = new int[size][6][2];
        int[][][] arr= new int[2][6][size];
        pr(System.currentTimeMillis() - t );
Run Code Online (Sandbox Code Playgroud)

版画 44 ms

第二种解决方案115次更快

dil*_*lix 7

测试更简单 int[][]

int[][] arr = new int[size][2];
Run Code Online (Sandbox Code Playgroud)

在这种情况下,您必须分配size大小为16字节的内存块.

在这种情况下

int[][] arr = new int[2][size];
Run Code Online (Sandbox Code Playgroud)

你只需要分配2个大小*8字节的内存.

分配是昂贵的操作.