我正在創建用於跟蹤位置的x,y值的列表。處理android優化非常重要,所以我想知道從資源使用的角度來看哪種方法更好。方法1: 爲x和y創建一個包含int的類(Position),然後創建一個列表:位置。方法2: 創建並行列表:位置X和位置Y。並行列表vs具有多個變量的類的列表
我在問,因爲方法1似乎是面向對象編程的用戶最友好的方式,但我對Java或android的內部工作原理不夠了解,恐怕額外類的開銷會被抵消任何好處。
或者它們足夠接近,它並不重要?
我正在創建用於跟蹤位置的x,y值的列表。處理android優化非常重要,所以我想知道從資源使用的角度來看哪種方法更好。方法1: 爲x和y創建一個包含int的類(Position),然後創建一個列表:位置。方法2: 創建並行列表:位置X和位置Y。並行列表vs具有多個變量的類的列表
我在問,因爲方法1似乎是面向對象編程的用戶最友好的方式,但我對Java或android的內部工作原理不夠了解,恐怕額外類的開銷會被抵消任何好處。
或者它們足夠接近,它並不重要?
兩種解決方案之間的性能差異可以忽略不計。根據更詳細的具體情況,比如哪種類型的列表(數組,列表,地圖等)以及您訪問數據的方式將決定哪一種速度可以忽略不計。
但是,從可讀性,面向對象和可維護性的角度來看,方法1在滑坡中獲勝。
Android上的Java有一個緩慢的垃圾回收。如果創建並丟棄大量的Position對象,則當GC啓動時,應用程序可能會出現可見的暫停。 如果使用類解決方案,則可以在類中創建對象緩存以緩解此問題。
如果使用數組,請注意迭代器和foreach循環:上次我檢查時,他們爲每個元素創建了一個新對象。
無論如何,性能差異只有在創建這些對象的數量非常大(如每秒數千個)時纔可見。
這就是我的想法。這有點讓我想知道爲什麼沒有內建二/三整數的結構(可能是Integer2/Integer3),似乎我所做過的很多項目都必須創建類來跟蹤它們。無論如何,感謝您的快速回復。 – Z30Dragon
這裏有Point Class [linky link](http://developer.android.com/reference/android/graphics/Point.html) – pvyParts
通常,編寫自己的類可以更具可讀性和同等效率,可以分配有意義的,有用的_names_到字段來描述他們的意思。 –