关于java:迭代1维与2维数组的速度

Speed of iterating through 1-dimensional vs 2-dimensional arrays

我读了一篇文章,介绍了由于数据的存储方式,在水平方向上迭代二维数组比垂直方向上更快(参见:在二维数组中循环的最快方法?)当我读到答案的时候,这是有意义的,但它让我想知道二维和一维数组之间的区别是什么。使用相同数量的单元格迭代一维数组与二维数组时,是否存在速度差异?


在Java上,有更多的因素和更多的开销数组。由于数组是对象,所以int[][]ints的数组对象。如果热点优化或缓存数组访问,这可能会使水平迭代比垂直迭代更快。

对于一维与二维,一维会更快,因为它是一个数组查找和一个基元与一个数组查找、一个数组对象引用的取消引用,然后是该数组中的查找。

然而,这样的微优化并不一定是对你时间的最佳利用,因为有更好的地方可以改进。