由于数据的存储方式,我正在阅读一篇关于如何水平迭代2维数组比垂直更快的文章(参见:Fastest way to loop through a 2d array?)。当我阅读答案时,这是有道理的,但它让我想知道2和1维阵列之间的差异。在使用相同数量的单元格迭代1维与2维数组时是否有任何速度差异?
答案 0 :(得分:3)
在Java上,数组有更多因素和更多开销。由于数组是对象,int[][]
是ints
的数组对象数组。如果热点优化或缓存阵列访问,这可能使水平迭代比垂直更快。
对于一维与二维,一维会更快,因为它是一个数组查找和一个原语与一个数组查找,一个数组对象引用的解引用,然后在中查找那个数组。
然而,这种微观优化并不一定是你的时间的最佳用途,因为可能有更好的改进空间。