1、開發高效能Java程式的原則和方法:
決定一個Java程式效能的好壞,是多方面的因素,包括前期的系統結構設計、底層平台架構設計、應用開發中的代碼編寫以及技巧的使用,系統平台的軟體配置,系統平台的硬體效能等等。這裡只給出代碼編寫方面的一些原則和方法。
相對於Java的其他方面,在效能領域Java飽受的非議可能最多。許多人認為,Java如果想更好的發展下去必須解決效能問題。然而真正的事實是Java在編譯器、JVM以及運行期最佳化方面確實在不斷的進步,Java正在啟動並執行越來越快。實際上很多的效能問題,是由於設計不佳引起的,與Java本身並無關係。在拙劣的設計和編碼面前,無論你使用多少運行期最佳化,無論你的編譯技術多麼先進,無論你的硬體平台效能多麼強大,最後的代碼運行依然低效。
同樣無論運行期最佳化技術、編譯技術以及硬體平台多麼強大,運用一些已被驗證對Java運行效能有益的技術,總是能獲得非常好的收益。
最佳化程式碼的注意事項:
1.除非必須最佳化,否則不要輕易改動;
2.改動之後要進行仔細的測試;
3.在各個JVM產品中,最佳化的方式是有區別的;
2、高效能Java的編碼原則:
(1)、先把焦點放在設計、資料結構和演算法身上;
(2)、不要依賴於編譯器編譯期最佳化技術,正確理解運行期代碼最佳化技術以及正確使用運行期代碼最佳化;
(3)、使用StringBuffer類完成字串串連;
(4)、將對象建立成本降至最低,即盡量建立輕量級對象;
1、合理設計對象大小
2、合理設計類的繼承深度
3、類的建構函式要短小精幹
4、不要建立非必要的對象
5、將對象的建立拖延到最後一刻,即消極式載入技術
6、可能的話要自己實現一個對象緩衝管理池,將對象的建立與回收控制在一個合理的範圍內
(5)、降低同步化帶來的影響;
1、合理識別是否一定要使用同步控制,盡量從設計上避免
2、注意控制同步代碼範圍,避免對線程活躍度造成影響
3、合理使用鎖變數,做到線程分離,提高程式並發度,更進一步提高程式輸送量
4、用於鎖變數的對象不宜過多,當要使用多個對象作為鎖變數時,一定要確保在代碼中自始自終按照同樣的順序鎖定它們,否則可能導致死結
(6)、儘可能使用Stack變數和基本類型完成必要的任務;
(7)、使用static、final、private方法以促成inlining;
(8)、執行個體變數初始化一次就好;(即一定義就會有一個初始值,下面不需要再進行一次初始化)
(9)、叢集類對象的處理;
1、如何正確遍曆叢集類?
2、如何複製數組元素?
3、如何正確選擇使用合適的叢集類?
(10)、儘可能重用對象;
(11)、使用消極式載入技術;
當然上面都是理論方法,實踐需要靠大家自己去了,兩個代碼實在不知道那種效能更好,javap看位元組碼執行,看步驟,這是最土的方法,卻是最能說服自己的證據!
轉載來源www.boobooke.com/bbs->J2EE專區->藍山作品—Java背後的秘密(匯總)