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.當介面不可見時釋放記憶體 當使用者開啟另...