2017-04-18 46 views
6

Farkettim ki buNeden büyük boyutlu bir numaraya sahip olan ilk boyuttan başlayarak iki boyutlu dizileri başlatan java uzun zaman alıyor?

durumda 1 gibi 2D dizi başlatılıyor: - Bu

vaka gibi başlatılıyor daha fazla zaman ayırdığınız

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

2: -

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

yılında durumda 1 bu 4000ms etrafında toke zaman ama durumda 2 bu 100M'yi aşmaz neden bu büyük boşluk var?

+0

Bunu nasıl ölçtünüz? – RealSkeptic

+3

Her iki durumda kaç tane nesnenin/dizinin oluşturulması gerektiğini düşünün. İpucu: Fark büyük. – Thomas

cevap

10

Tam olarak, Java'nın 2B dizileri yoktur: bunun yerine, dizilerin 1D dizilerine yerleştirilmiş 1D dizilerini kullanır.

İlk durumda, tek diziler dizisine ek olarak, Java 10000001 dizisini 10 öğeden oluştururken, ikinci durumda 10000001 öğesinin 10 dizisini oluşturur.

Nesne sayısı milyonlarca faktörden farklı olduğundan, ilk durum önemli ölçüde daha yavaştır.