代碼優化

1. 儘量使用局部變量 * 調用方法時傳遞參數以及在調用中建立的臨時變量都保存在棧中,速度較快 * 像 靜態變量 實例變量 大對象等都在堆中 速度較慢

2. 儘可能減小對變量的重複計算
數據庫

3. 儘可能採用懶加載的策略
數組

4. 儘可能重用對象安全

5. 及時關閉流
併發

6. 慎用異常 * 異常對性能不利,拋出異常先要建立一個新的對象,throwable接口的構造函數調用名爲fillInStackTrace()本地同步方法 * 此方法檢查堆棧,收集調用跟蹤信息,只要有異常就拋出.(異常只能用於錯誤處理,不可用來控制程序流程)
函數

7. 不要在循環中使用 try...catch...
性能

8. 容器初始化 儘量指定長度 如:new ArrayList<>(128); new HashMap<>(256);等避免自動擴容帶來性能消耗
ui

9. 當複製大量數據時, 使用System.arraycopy()命令
線程

10. 基於效率和類型檢查的考慮,應該可能使用array ,沒法肯定數組大小時再使用ArrayList
對象

11. 儘可能使用HashMap、ArrayList、StringBuilder,除非線程安全須要,不然不推薦使用 * Hashtable、Vector、StringBuffer,後三者因爲使用同步機制而致使了性能開銷
接口

12. 不要將數組聲明爲public static final * 將數組聲明爲public更是一個安全漏洞,這意味着這個數組能夠被外部類所改變

13. 儘可能在適合的場景使用單例 * 使用單例可減輕加載的負擔,縮短加載的時間,提升加載的效率,但並非全部場合都適用單例 可以使用單例的場景以下:

1> 控制資源的使用,經過線程同步來控制資源的併發訪問

2> 控制實例的產生,以達到節約資源爲目的

3> 控制數據的共享,在不創建直接關聯的條件下,讓多個不相關的進程或線程之間實現通訊

14. 儘可能避免隨意使用靜態變量 當某個對象定義爲static的變量所引用,那麼gc一般不會回收這個對象所佔有的堆內存

15. ArrayList 隨機遍歷快,linkedList 添加/刪除快

  ArrayList 基於數組 有下標,遍歷較快,

linkedList 基於鏈表 添加/刪除只需改變指向就好

順序插入和隨機訪問比較多的場景使用ArrayList,元素刪除和中間插入比較多的場景使用LinkedList

16. 儘可能使用同步代碼塊代替同步方法

17. 不可建立一些不使用的對象,不要導入一些不使用的類

18. 程序運行過程當中避免使用反射,(反射功能強大但效率不高)

19. 使用數據庫鏈接池 和線程池 這兩個池都是用於重用對象的,前者可避免頻繁打開和關閉鏈接,後者可避免頻繁建立和銷燬線程

20. 儘可能使用帶緩衝的輸入輸出流進行IO操做 * 帶緩衝的輸出流: 即BufferedReader、BufferedWriter、BufferedInputStream、BufferedOutputStream這可極大地提高IO效率 21. 把一個基本數據類型轉爲字符串,基本數據類型.toString()最快 String.valueOf(數據)次之, 數據 + ""最慢

22. 遍歷Map 最有效率的方法

Map<String,String> map = new HashMap<>();

for (Map.Entry<String,String> entry : map.entrySet())

{

      String key = entry.getKey();

     String value = entry.getValue();

}

或者

Map<String,String> map = new HahsMap<>();

Set<Map.Entry<>String,String> entry = map.entrySet(); Iterator<Map.Entry<String,String>> iter = entry.iterator();

while(iter.hasNext())

{

    Map.Entry<String,String> entry = iter.next();

}

23. 對資源的close()建議分開操做

相關文章
相關標籤/搜索