第 章 Java性能調(diào)優(yōu)概述

專注于為中小企業(yè)提供成都網(wǎng)站設(shè)計、網(wǎng)站建設(shè)服務(wù),電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)贛縣免費做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了成百上千家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實現(xiàn)規(guī)模擴充和轉(zhuǎn)變。
性能概述
看懂程序的性能
性能的參考指標(biāo)
木桶原理與性能瓶頸
Amdahl定律
設(shè)計調(diào)優(yōu)
代碼調(diào)優(yōu)
JVM調(diào)優(yōu)
數(shù)據(jù)庫調(diào)優(yōu)
操作系統(tǒng)調(diào)優(yōu)
優(yōu)化的一般步驟
系統(tǒng)優(yōu)化注意事項
小結(jié)
第 章設(shè)計優(yōu)化
善用設(shè)計模式
單例模式( )
單例模式( )
單例模式( )
代理模式( )
代理模式( )
代理模式( )
代理模式( )
代理模式( )
代理模式( )
代理模式( )
享元模式( )
享元模式( )
裝飾者模式( )
裝飾者模式( )
裝飾者模式( )
裝飾者模式( )
觀察者模式( )
觀察者模式( )
觀察者模式( )
Value Object模式( )
Value Object模式( )
業(yè)務(wù)代理模式( )
業(yè)務(wù)代理模式( )
緩沖(Buffer)( )
緩沖(Buffer)( )
緩存(Cache)( )
緩存(Cache)( )
緩存(Cache)( )
對象復(fù)用 池 ( )
對象復(fù)用 池 ( )
對象復(fù)用 池 ( )
對象復(fù)用 池 ( )
對象復(fù)用 池 ( )
并行替代串行
負(fù)載均衡( )
負(fù)載均衡( )
負(fù)載均衡( )
負(fù)載均衡( )
時間換空間
空間換時間
小結(jié)
編輯推薦
Java程序設(shè)計培訓(xùn)視頻教程
J EE高級框架實戰(zhàn)培訓(xùn)視頻教程
J ME移動開發(fā)實戰(zhàn)教學(xué)視頻
Visual C++音頻/視頻技術(shù)開發(fā)與實戰(zhàn)
Oracle索引技術(shù)
lishixinzhi/Article/program/Java/gj/201311/27852
1)盡量指定類、方法的final修飾符。帶有final修飾符的類是不可派生的,Java編譯器會尋找機會內(nèi)聯(lián)所有的final方法,內(nèi)聯(lián)對于提升Java運行效率作用重大,此舉能夠使性能平均提高50%。
2)盡量重用對象。由于Java虛擬機不僅要花時間生成對象,以后可能還需要花時間對這些對象進(jìn)行垃圾回收和處理,因此生成過多的對象將會給程序的性能帶來很大的影響。
3)盡可能使用局部變量。調(diào)用方法時傳遞的參數(shù)以及在調(diào)用中創(chuàng)建的臨時變量都保存在棧中速度較快,其他變量,如靜態(tài)變量、實例變量等,都在堆中創(chuàng)建速度較慢。
4)慎用異常。異常對性能不利,只要有異常被拋出,Java虛擬機就必須調(diào)整調(diào)用堆棧,因為在處理過程中創(chuàng)建了一個新的對象。異常只能用于錯誤處理,不應(yīng)該用來控制程序流程。
5)乘法和除法使用移位操作。用移位操作可以極大地提高性能,因為在計算機底層,對位的操作是最方便、最快的,但是移位操作雖然快,可能會使代碼不太好理解,因此最好加上相應(yīng)的注釋。
6)盡量使用HashMap、ArrayList、StringBuilder,除非線程安全需要,否則不推薦使用 Hashtable、Vector、StringBuffer,后三者由于使用同步機制而導(dǎo)致了性能開銷。
盡量在合適的場合使用單例。使用單例可以減輕加載的負(fù)擔(dān)、縮短加載的時間、提高加載的效率,但并不是所有地方都適用于單例。
提高JAVA的性能,一般考慮如下的四個主要方面:
(1) 程序設(shè)計的方法和模式
一個良好的設(shè)計能提高程序的性能,這一點不僅適用于JAVA,也適用也任何的編程語言。因為它充分利用了各種資源,如內(nèi)存,CPU,高速緩存,對象緩沖池及多線程,從而設(shè)計出高性能和可伸縮性強的系統(tǒng)。
當(dāng)然,為了提高程序的性能而改變原來的設(shè)計是比較困難的,但是,程序性能的重要性常常要高于設(shè)計上帶來的變化。因此,在編程開始之前就應(yīng)該有一個好的設(shè)計模型和方法。
(2) JAVA布署的環(huán)境。
JAVA布署的環(huán)境就是指用來解釋和執(zhí)行JAVA字節(jié)碼的技術(shù),一般有如下五種。即解釋指令技術(shù)(Interpreter Technology),及時編譯的技術(shù)(Just In Time Compilier Technology), 適應(yīng)性優(yōu)化技術(shù)(Adaptive Optimization Technology), 動態(tài)優(yōu)化,提前編譯為機器碼的技術(shù)(Dynamic Optimization,Ahead Of Time Technology)和編譯為機器碼的技術(shù)(Translator Technology).
這些技術(shù)一般都通過優(yōu)化線程模型,調(diào)整堆和棧的大小來優(yōu)化JAVA的性能。在考慮提高JAVA的性能時,首先要找到影響JAVA性能的瓶頸(BottleNecks),在確認(rèn)了設(shè)計的合理性后,應(yīng)該調(diào)整JAVA布署的環(huán)境,通過改變一些參數(shù)來提高JAVA應(yīng)用程序的性能。具體內(nèi)容見第二節(jié)。
(3) JAVA應(yīng)用程序的實現(xiàn)
當(dāng)討論應(yīng)用程序的性能問題時,大多數(shù)的程序員都會考慮程序的代碼,這當(dāng)然是對的,當(dāng)更重要的是要找到影響程序性能的瓶頸代碼。為了找到這些瓶頸代碼,我們一般會使用一些輔助的工具,如Jprobe,Optimizit,Vtune以及一些分析的工具如TowerJ Performance等。這些輔助的工具能跟蹤應(yīng)用程序中執(zhí)行每個函數(shù)或方法所消耗掉的時間,從而改善程序的性能。
(4) 硬件和操作系統(tǒng)
為了提高JAVA應(yīng)用程序的性能,而采用跟快的CPU和更多的內(nèi)存,并認(rèn)為這是提高程序性能的唯一方法,但事實并非如此。實踐經(jīng)驗和事實證明,只有遭到了應(yīng)用程序性能的瓶頸,從而采取適當(dāng)?shù)梅椒ǎ缭O(shè)計模式,布署的環(huán)境,操作系統(tǒng)的調(diào)整,才是最有效的。
3.程序中通常的性能瓶頸。
所有的應(yīng)用程序都存在性能瓶頸,為了提高應(yīng)用程序的性能,就要盡可能的減少程序的瓶頸。以下是在JAVA程序中經(jīng)常存在的性能瓶頸。
了解了這些瓶頸后,就可以有針對性的減少這些瓶頸,從而提高JAVA應(yīng)用程序的性能
4. 提高JAVA程序性能的步驟
為了提高JAVA程序的性能,需要遵循如下的六個步驟。
a) 明確對性能的具體要求
在實施一個項目之前,必須要明確該項目對于程序性能的具體要求,如:這個應(yīng)用程序要支持5000個并發(fā)的用戶,并且響應(yīng)時間要在5秒鐘之內(nèi)。但同時也要明白對于性能的要求不應(yīng)該同對程序的其他要求沖突。
對于很多學(xué)習(xí)開發(fā)的人員來說,進(jìn)行性能優(yōu)化是一個非常復(fù)雜的問題,并且還需要大量的經(jīng)驗和知識積累。
想要優(yōu)化達(dá)到一定的效果是一件非常不容易的事情,很多人認(rèn)為需要在經(jīng)驗非常豐富的情況下才能使用,其實在沒有獲得豐富經(jīng)驗和知識之前也是可能進(jìn)行性能優(yōu)化的,廣西電腦培訓(xùn)認(rèn)為只要掌握一定的方法和技巧就能創(chuàng)建出性能良好的程序。
在進(jìn)行性能調(diào)優(yōu)的過程中,主要是基于Java語言,但是也有一些是可以使用在應(yīng)用程序和編程語言中。
那么在使用之前,廣西IT培訓(xùn)為大家一起討論通用的性能調(diào)優(yōu)技巧。
1、先不要急著優(yōu)化在必要之前,一定不要急著進(jìn)行優(yōu)化,這是一種非常重要的性能調(diào)優(yōu)方法。
在進(jìn)行調(diào)優(yōu)過程中,我們應(yīng)該遵守最佳的實踐方法,這樣才能得到有效的實現(xiàn)。
但是在使用過程中并不意味著需要證明必要性,最好的方法是使用標(biāo)準(zhǔn)庫或是構(gòu)建復(fù)雜進(jìn)行優(yōu)化。
在很多情況下,如果過早的進(jìn)行優(yōu)化會占用很大一部分的時間,還會出現(xiàn)代碼不好讀取和維護(hù)的情況。
如果更嚴(yán)重,這樣的優(yōu)化是不會帶來任何好處的,很多時候你花費大量時間進(jìn)行優(yōu)化的程序并非是最關(guān)鍵的地方。
2、使用分析器找到瓶頸在確定應(yīng)用程序的某些部分需要優(yōu)化的時候,應(yīng)從哪里進(jìn)行入手呢?解決這種情況主要有兩種方法,廣西IT培訓(xùn)認(rèn)為首先就是了解代碼,找出看上去存在問題和可能產(chǎn)生疑惑的地方開始優(yōu)化。
其次是可以使用分析器進(jìn)行優(yōu)化,分析器能夠獲取代碼中每個部分的性能詳細(xì)信息。
3、為應(yīng)用程序創(chuàng)建測試套件這個一種能夠幫助你避免很多問題的方法,很多問題主要是發(fā)生在性能部署在生產(chǎn)環(huán)境之后。
在使用過程中,你可以定義測試整個應(yīng)用程序的套件,這樣就能完成性能改造和運行。
在測試運行的過程中,能夠幫助你更改功能和性能的影響,這樣才能讓利大于弊。
如果在使用過程中,你的任務(wù)運行于多個應(yīng)用程序的多個部分,例如數(shù)據(jù)庫、緩存等,這是非常重要的。
進(jìn)行Java性能調(diào)優(yōu)的技巧有很多種,在進(jìn)行性能調(diào)優(yōu)的過程中可以選擇適合自己的方法,在提高應(yīng)用程序的性能中,不需要做大量的工作。
廣西電腦培訓(xùn)認(rèn)為最好的方法就是進(jìn)行稍微努力,這樣就能很好的應(yīng)用到代碼中。
文章名稱:java代碼提高性能 提高java開發(fā)效率
URL鏈接:http://www.chinadenli.net/article24/doddice.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開發(fā)、網(wǎng)站排名、全網(wǎng)營銷推廣、App設(shè)計、網(wǎng)頁設(shè)計公司、標(biāo)簽優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)