興味深い: 最近、Java プロジェクトの 1 つで、データを 2 次元配列に格納するか、そのインスタンスを 1 次元配列に入れる専用のクラスを作成できるという状況に遭遇しました。それで、パフォーマンス(ランタイム、メモリ消費)に関して、このトピックに関する標準的な設計アドバイスがあるかどうか疑問に思いますか?
設計パターン(非常に単純化された状況)に関係なく、次のようなデータを保存できるとしましょう
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 の設計は、アクセス速度とメモリ消費の点で、一方のアプローチに対して他方のアプローチよりも優れているのでしょうか?
どうもありがとう。