6

私はこのJavaが、大きなサイズの番号を持つ最初の次元から始まる2次元配列を初期化するのに、長い時間がかかるのはなぜですか?

ケース1のような2次元配列を初期化することに気づいた: - :中

int ar[] [] = new int [10] [10000001] ; 

-

int ar [] [] = new int [10000001][10] ; 

この

ケース2のようにそれを初期化するよりも多くの時間を割いてケース1は約4000msの時間を過ごすが、ケース2では100msを超えない なぜこの大きなギャップがあるのか​​?

+0

これをどのように測定しましたか? – RealSkeptic

+3

どちらの場合でも作成する必要があるオブジェクト/配列の数を考えてください。ヒント:その違いは大きいです。 – Thomas

答えて

10

厳密に言えば、Javaには2D配列がありません。代わりに、1D配列を1D配列の配列に使用します。

最初のケースでは、配列の単一の配列に加えて、Javaは10要素の10000001配列を作成し、2番目の場合は10配列の10000001要素を作成します。

オブジェクト数が100万分の1であるため、最初のケースは大幅に遅くなります。

関連する問題