Android效能優化 資料結構的優化

2021-07-09 01:56:06 字數 2170 閱讀 7295

android效能優化包含很多方面,今天我們來看看對於資料結構如何做優化。

1.集合的遍歷操作:

private

void

for1(arraylistlist)

long end = system.currenttimemillis();

log.d(tag,"---for1 spend:" + (end - start) + "ms");

}private

void

for2(arraylistlist)

long end = system.currenttimemillis();

log.d(tag,"---for2 spend:" + (end - start) + "ms");

}private

void

foreach(arraylistlist)

long end = system.currenttimemillis();

log.d(tag,"---foreach spend:" + (end - start) + "ms");

}private

void

iterator(arraylistlist)

long end = system.currenttimemillis();

log.d(tag,"---iterator spend:" + (end - start) + "ms");

}d/collectionactivity: ---for1 spend:65ms

d/collectionactivity: ---for2 spend:77ms

d/collectionactivity: ---foreach spend:117ms

d/collectionactivity: ---iterator spend:118ms

計算發現:for1方法的便利速度最快,而改進for迴圈和iterator遍歷速度明顯不如普通for迴圈速度,而普通for迴圈中若將list的長度宣告為臨時變數使用效果更佳。所以在使用arraylist進行便利操作時盡量採用for1()方法的結構。

2.sparearray替代hashmap< integer,object>

sparearray是android提供的類似map結構的集合,為什麼用sparearray替代hashmap.我們先看一下sparearray的結構:

public

sparsearray(int initialcapacity) else

msize = 0;

}

spasearray使用int型別做為key值,而hashmap的key值則必須為integer,這樣就導致在使用hashmap時建立了很多integer物件。

3.arraylist、linkedlist、vector比較

arraylist:線性不安全,可變陣列,隨機訪問很快,刪除非頭尾元素慢

linkedlist:線性不安全,雙鏈表,隨機訪問很慢,增刪操作很快,不耗費多餘資源

vector:線性安全,可變陣列,由於線性安全,所以操作效率低於arraylist,但記憶體方面優於arraylist。

arraylist與vector記憶體占用不同是由於兩者的擴容機制不同造成的:

arraylist:儲存元素超過容器大小時,擴大1.5倍

@override public boolean add(e object) 

a[s] = object;

size = s + 1;

modcount++;

return

true;

}

vector:按需擴容,每次加1,(elementcount++)

@override

public

synchronized

boolean

add(e object)

elementdata[elementcount++] = object;

modcount++;

return

true;

}

由此比較,在記憶體方面vector表現比arraylist要好。

Spark效能優化 優化資料結構

1 優先使用陣列以及字串,而不是集合類。也就是說,優先用array,而不是arraylist linkedlist hashmap等集合。比如,有個list list new arraylist 將其替換為int arr new int。這樣的話,array既比list少了額外資訊的儲存開銷,還能使...

Android效能優化

android效能優化 1.http用gzip壓縮,設定連線超時時間和響應超時時間 http請求按照業務需求,分為是否可以快取和不可快取,那麼在無網路的環境中,仍然通過快取的httpresponse瀏覽部分資料,實現離線閱讀。2.listview 效能優化 1 復用convertview 在geti...

Android效能優化

1.節制地使用service 如果應用程式當中需要使用service來執行後台任務的話,請一定要注意只有當任務正在執行的時候才應該讓service執行起來。另外,當任務執行完之後去停止service的時候,要小心service停止失敗導致記憶體洩露的情況 2.當介面不可見時釋放記憶體 當使用者開啟另...