【发布时间】:2013-03-13 05:16:09
【问题描述】:
我不能 100% 确定这种机制的作用,所以我决定在这里发帖以进一步澄清。
我正在做一个应该用 Java 处理大量数据的项目(它必须是 Java)。我希望它尽可能高效。我所说的高效是指内存和速度计算应该放在第一位,而可读性应该放在第二位。
现在我有两种方法来存储我的数据:创建一个 MyObject 数组
1) MyObject[][] V = new MyObject[m][n]
或者创建两个int数组:
2) int[][] V = new int[m][n]
3) int[][] P = new int[m][n]
显然MyObject 至少包含两个字段和一些方法。现在我注意到,在循环MyObject 数组以分配值时,我必须调用new,否则我会得到一个空指针异常。这意味着第 1 行中的 new 不够用。考虑到数组也是 Java 中的对象,这是否比 P[i][j]=n 更昂贵的操作?
【问题讨论】:
-
我认为是的 v[i][j] = new MyObject(object1 , object2);比 P[i][j]=n 贵; .但我认为你不必对此如此认真。
-
在开始编码之前搞清楚不同内存布局的效率永远不会奏效。您应该以两种方式之一对其进行编码,无论哪种方式,然后配置文件。如果太慢,看看是什么让你慢了下来;很有可能,它与内存中对象的布局无关。
-
相关,如果 n 明显大于或小于 m:stackoverflow.com/questions/15339296/…
-
更新:我没有做任何空间分析,但我的代码运行速度是数组的两倍,所以我会坚持下去。
标签: java multidimensional-array performance memory-efficient