這不算原創吧,也不是轉載,也不是翻譯。算是閱讀筆記吧。源於android的dev guide
http://developer.android.com/guide/practices/design/performance.html
開始
代碼優化的基本原則:
- 只做應該做的
- 內存能不申請就不申請
具體做法:
- 儘量不要在循環中新建對象,這樣會迫使vm總在gc
- 用StringBuffer替代String做加運算。這樣就不會產生大量的中間對象了。String可是無法修改的
- 截取String時,用subString()替代新建對象。因爲用subString()時,內部的char[]是共享的
- 將一個類的數組切分成多個數組。也就是說一個類A含有{int a, int b},那麼將其分成a[]和b[]的執行效率要比A[]的高。但是這麼做不好維護吧~~
- JIT的優化會讓接口引用和直接引用的效率相同
- JIT會讓值緩存和不緩存的效率相同(就是在for中緩存len一類的東西)
5. 私有域不要用Getter和Setter進行訪問
6. 常量用static final修飾
靜態常量會被寫入dex文件,在使用的時候直接被替換(類似與C中的宏吧);其他的域在調用的時候會去查類的域表,降低性能
8. 內部類用package作用域替代private作用域
- 對於private的內部類,使用外部域時會新建橋接類,而package作用域的內部類就不會有這個問題
- 如果是對外公開接口的話,就最好將內部類寫成private了
- float在計算的時候會比integer慢2x多
- float和double在計算的時候速度一樣,只是double的空間佔用是2x
11. 少用JNI
12. 優化後做性能對比