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

标签 java arrays primitive-types

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

  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 会导致那么大的延迟。

最佳答案

根据@David Zimmerman的建议,我已将代码更改为以下代码:

  int SIZE = 1000000000;
  int[] rnums = new int[SIZE];
  byte[][] d1 = new byte[2][SIZE]; 
  byte[][] d2 = new byte[2][SIZE];

它工作正常,运行正常。

关于java - 为什么java中二维数组的运行速度明显慢于一维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58221674/

相关文章:

java - 极少数在处理时如何表现?

java - 如何将servlet发送的结果放入html输入框中?

java - 当使用 String 文字创建 String 对象时调用哪个 String 类构造函数

java - 文本字段未以正确的大小显示

php - 根据值从多维数组中删除元素

python - 为什么数组的直接索引比迭代快得多?

javascript - angularjs md checkbox获取选中的值

c++ - 传递右值引用函数参数时如何从原始类型变量复制

结果集返回大量数据时的java堆大小问题

java - SonarLint 此处使用原始 boolean 表达式