Java代碼性能優化技巧IT工程師必備,代碼優化,程序員必須懂得一門學問,簡潔漂亮的代碼給人的感覺就像如沐清風,一堆垃圾的代碼給人的感覺就像……
代碼優化,程序員必須懂得一門學問,簡潔漂亮的代碼給人的感覺就像如沐清風,一堆垃圾的代碼給人的感覺就像吃了翔一樣的難受。。所以不管是程序員還是準程序員,養成良好的代碼優化習慣都是必須要養成的。
首先。我們要搞清楚優化代碼的目的
減小代碼的體積
提高代碼運行的效率
代碼優化具體細節(只說Java的,小編就是Java程序員)
1.盡量指定類、方法的final修飾符
Java編譯器會尋找機會內聯所有的final方法,內聯對于提升Java運行效率作用重大,具體參見Java運行期優化。此舉大概能。
2.夠使性能平均提高50%。
3.盡量重用對象特別是String對象的使用,出現字符串連接時應該使用StringBuilder/StringBuffer代替。
4.盡可能使用局部變量。
5.及時關閉流:進行數據庫連接、I/O流操作,在使用完畢后,及時關閉以釋放資源。
6.盡量減少對變量的重復計算:明確一個概念,對方法的調用,即使方法中只有一句語句,也是有消耗的,包括創建棧幀、調用方法時保護現場、調用方法完畢時恢復現場等。
7.盡量采用懶加載的策略,即在需要的時候才創建。
8.慎用異常
異常對性能不利。拋出異常首先要創建一個新的對象,Throwable接口的構造函數調用名為fillInStackTrace()的本地同步方法,fillInStackTrace()方法檢查堆棧,收集調用跟蹤信息。只要有異常被拋出,Java虛擬機就必須調整調用堆棧,因為在處理過程中創建了一個新的對象。異常只能用于錯誤處理,不應該用來控制程序流程。
9.不要在循環中使用try…catch…,應該把其放在最外層。
10.如果能估計到待添加的內容長度,為底層以數組方式實現的集合、工具類指定初始長度。
11.當復制大量數據時,使用System.arraycopy()命令。
12.乘法和除法使用移位操作:移位操作雖然快,但是可能會使代碼不太好理解,因此最好加上相應的注釋。
13.循環內不要不斷創建對象引用。
14.基于效率和類型檢查的考慮,應該盡可能使用array,無法確定數組大小時才使用ArrayList。
15.盡量使用HashMap、ArrayList、StringBuilder,除非線程安全需要,否則不推薦使用Hashtable、Vector、StringBuffer,后三者由于使用同步機制而導致了性能開銷。
16.不要將數組聲明為public static final。
盡量在合適的場合使用單例
使用單例可以減輕加載的負擔、縮短加載的時間、提高加載的效率,但并不是所有地方都適用于單例,簡單來說,單例主要適用于以下三個方面:
?。?)控制資源的使用,通過線程同步來控制資源的并發訪問
?。?)控制實例的產生,以達到節約資源的目的
?。?)控制數據的共享,在不建立直接關聯的條件下,讓多個不相關的進程或線程之間實現通信
盡量避免隨意使用靜態變量
要知道,當某個對象被定義為static的變量所引用,那么gc通常是不會回收這個對象所占有的堆內存的
及時清除不再需要的會話
實現RandomAccess接口的集合比如ArrayList,應當使用最普通的for循環而不是foreach循環來遍歷
使用同步代碼塊替代同步方法
將常量聲明為static final,并以大寫命名
這樣在編譯期間就可以把這些內容放入常量池中,避免運行期間計算生成常量的值。另外,將常量的名字以大寫命名也可以方便區分出常量與變量
不要創建一些不使用的對象,不要導入一些不使用的類
程序運行過程中避免使用反射
反射是Java提供給用戶一個很強大的功能,功能強大往往意味著效率不高。不建議在程序運行過程中使用尤其是頻繁使用反射機制
使用數據庫連接池和線程池
使用帶緩沖的輸入輸出流進行IO操作,這可以極大地提升IO效率
順序插入和隨機訪問比較多的場景使用ArrayList,元素刪除和中間插入比較多的場景使用LinkedList
不要讓public方法中有太多的形參
public方法即對外提供的方法,如果給這些方法太多形參的話主要有兩點壞處:
1、違反了面向對象的編程思想,Java講求一切都是對象,太多的形參,和面向對象的編程思想并不契合
2、參數太多勢必導致方法調用的出錯概率增加
字符串變量和字符串常量equals的時候將字符串常量寫在前面,可以避免空指針異常
請知道,在java中if (i == 1)和if (1 == i)是沒有區別的,但從閱讀習慣上講,建議使用前者
不要對數組使用toString()方法
不要對超出范圍的基本數據類型做向下強制轉型
公用的集合類中不使用的數據一定要及時remove掉
把一個基本數據類型轉為字符串,基本數據類型.toString()是最快的方式、String.valueOf(數據)次之、數據+””最慢
使用最有效率的方式去遍歷Map
對資源的close()建議分開操作
最后再給各位或是程序員或是準程序員們的一點建議了吧:
其實應該還有其他的Java代碼優化小技巧,但是我可能還沒有了解到,也沒有總結的很好。
學習就像逆水行舟,學習Java更是這樣,畢竟Java已經雄踞編程語言排行第一已經十幾年了,但正是這十幾年,也使得Java各方面的體系也比其他語言更加完整和先進,有什么不懂的問題很容易就能到到解決
別讓別人看見你的代碼第一時間想到的是刪了重寫而不是代碼優化,一位大佬親口跟我說的。
Java代碼性能優化技巧IT工程師必備,關于軟件測試方面的知識點就介紹到這里了,需要了解拓勝軟件測試培訓的可以咨詢軟件測試在線老師。