5

为什么

        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 );

打印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 );

印刷44 ms

第二种解决方案快 115 倍

4

1 回答 1

7

测试更简单int[][]

int[][] arr = new int[size][2];

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

在这种情况下

int[][] arr = new int[2][size];

您只需分配 2 块大小*8 字节的内存。

并且分配是昂贵的操作。

于 2013-02-01T08:23:53.973 回答