猿问

为什么在java中二维数组的运行速度明显慢于一维数组

对于我的一个程序,我需要大内存,我用两种不同的实现来完成此操作,如下:


  int SIZE = 1000000000;

  int[] rnums = new int[SIZE];

  byte[] d1 = new byte[2 * SIZE];

  byte[] d2 = new byte[2 * SIZE];



  int SIZE = 1000000000;

  int[] rnums = new int[SIZE];

  byte[][] d1 = new byte[SIZE][2]; 

  byte[][] d2 = new byte[SIZE][2];

两个程序都可以工作并产生正确的答案,但是 2D 实现速度非常慢,随着 SIZE 的增加,它变得越来越慢。


其余的代码非常相似,我不明白为什么 2D 会导致那么大的延迟。


人到中年有点甜
浏览 107回答 1
1回答

慕容708150

我已将代码更改为以下代码:  int SIZE = 1000000000;  int[] rnums = new int[SIZE];  byte[][] d1 = new byte[2][SIZE];   byte[][] d2 = new byte[2][SIZE];并且它可以工作,运行正常。
随时随地看视频慕课网APP

相关分类

Java
我要回答