出于兴趣:最近,我在我的一个 Java 项目中遇到了一种情况,我可以将一些数据存储在二维数组中,或者为它创建一个专用类,我会将其实例放入一维数组中。所以我想知道在性能(运行时,内存消耗)方面是否存在一些关于这个主题的规范设计建议?
不考虑设计模式(极其简化的情况),假设我可以存储数据
class MyContainer {
public double a;
public double b;
...
}
接着
MyContainer[] myArray = new MyContainer[10000];
for(int i = myArray.length; (--i) >= 0;) {
myArray[i] = new MyContainer();
}
...
相对
double[][] myData = new double[10000][2];
...
我不知何故认为基于数组的方法应该更紧凑(内存)和更快(访问)。再说一次,也许不是,数组也是对象,数组访问需要检查索引,而对象成员访问不需要。(?)对象数组的分配可能(?)需要更长的时间,因为我需要迭代地创建由于额外的类,实例和我的代码会更大。
因此,我想知道常见 JVM 的设计是否在访问速度和内存消耗方面为一种方法提供了优于另一种方法的优势?
非常感谢。