軟件性能優(yōu)化之代碼優(yōu)化

軟件性能優(yōu)化之代碼優(yōu)化

ID:22460287

大?。?8.50 KB

頁數(shù):7頁

時(shí)間:2018-10-29

軟件性能優(yōu)化之代碼優(yōu)化_第1頁
軟件性能優(yōu)化之代碼優(yōu)化_第2頁
軟件性能優(yōu)化之代碼優(yōu)化_第3頁
軟件性能優(yōu)化之代碼優(yōu)化_第4頁
軟件性能優(yōu)化之代碼優(yōu)化_第5頁
資源描述:

《軟件性能優(yōu)化之代碼優(yōu)化》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在學(xué)術(shù)論文-天天文庫。

1、軟件性能優(yōu)化之代碼優(yōu)化  摘要程序編碼在整個(gè)軟件生命周期中是將軟件設(shè)計(jì)的結(jié)果轉(zhuǎn)換成計(jì)算機(jī)可運(yùn)行的程序代碼的過程,也可以說是程序的內(nèi)在本質(zhì)。在實(shí)際項(xiàng)目中,代碼優(yōu)化至關(guān)重要。本文就是從代碼優(yōu)化的角度,介紹了一些優(yōu)化Java代碼的建議,包括盡量重用對(duì)象,使用局部變量等,還利用一些實(shí)例來說明和解釋優(yōu)化方法的有效性,可以使軟件性能得到提升,提高軟件的運(yùn)行速度,減少運(yùn)行時(shí)占用的內(nèi)存?!  娟P(guān)鍵詞】軟件性能代碼優(yōu)化Java  1前言  當(dāng)今的軟件功能越來越復(fù)雜,需求也越來越多,隨之而來對(duì)軟件性能上的要求有時(shí)候是硬件不能完全解決的。很多實(shí)際的

2、項(xiàng)目證明,如果在開發(fā)軟件時(shí)不注意軟件性能的優(yōu)化,雖然可能實(shí)現(xiàn)了要求的功能,但是也可能不會(huì)給用戶帶來很好的效益。因此,軟件的性能優(yōu)化一直是計(jì)算機(jī)開發(fā)過程中需要注意的問題,而代碼優(yōu)化是性能優(yōu)化其中重要的一個(gè)方面。一個(gè)優(yōu)秀的軟件系統(tǒng)應(yīng)該有一個(gè)優(yōu)化的代碼結(jié)構(gòu)。代碼優(yōu)化的目的是減小代碼體積,提高代碼運(yùn)行的效率。但是可能有些人覺得沒用,改與不改對(duì)于代碼的運(yùn)行效率有什么影響呢?如果項(xiàng)目著眼于盡快無BUG上線,那么此時(shí)代碼的細(xì)節(jié)可以不精打細(xì)磨;但是如果有足夠的時(shí)間開發(fā)、維護(hù)代碼,這時(shí)候就必須考慮每個(gè)可以優(yōu)化的細(xì)節(jié)了,一個(gè)一個(gè)細(xì)小的優(yōu)化點(diǎn)累積起

3、來,對(duì)于代碼的運(yùn)行效率絕對(duì)大有提升?! ?軟件性能的代碼優(yōu)化  2.1軟件性能  軟件性能是軟件的一種非功能特性,它關(guān)注的不是軟件是否能夠完成特定的功能,而是在完成該功能時(shí)展示出來的及時(shí)性,是指一個(gè)軟件系統(tǒng)正確提供其服務(wù)的能力和效率,是軟件對(duì)用戶請(qǐng)求響應(yīng)速度在響應(yīng)時(shí)間、吞吐量、資源利用率和可用性等方面的度量?! ?.2代碼優(yōu)化  代碼優(yōu)化是指對(duì)程序代碼進(jìn)行等價(jià)變換。等價(jià)的含義是使得變換后的代碼運(yùn)行結(jié)果與變換前代碼運(yùn)行結(jié)果相同。優(yōu)化的含義是最終生成的代碼短,時(shí)空效率優(yōu)化。優(yōu)化可以在編譯的各個(gè)階段進(jìn)行,目標(biāo)是能生成更加高效的目標(biāo)代

4、碼?! ?.3代碼優(yōu)化方法及實(shí)例應(yīng)用  2.3.1盡量重用對(duì)象和盡可能使用局部變量  當(dāng)使用String對(duì)象時(shí),出現(xiàn)字符串連接時(shí)應(yīng)該使用StringBuilder或StringBuffer代替。由于Java虛擬機(jī)不僅要花時(shí)間生成對(duì)象,以后可能還需要花時(shí)間對(duì)這些對(duì)象進(jìn)行垃圾回收和處理,因此,生成過多的對(duì)象將會(huì)給程序的性能帶來很大的影響。調(diào)用方法時(shí)傳遞的參數(shù)以及在調(diào)用中創(chuàng)建的臨時(shí)變量都保存在棧中,因此速度較快,但是其他變量,如靜態(tài)變量、實(shí)例變量等,都在堆中創(chuàng)建,速度較慢。另外,棧中創(chuàng)建的變量,隨著方法的運(yùn)行結(jié)束,不需要額外的垃圾回

5、收;而在堆中創(chuàng)建的變量,需要進(jìn)行額外回收。  2.3.2盡量減少對(duì)變量的重復(fù)計(jì)算  在循環(huán)計(jì)算中,即使只有一條語句,對(duì)系統(tǒng)也是有消耗的,所以for循環(huán)中循環(huán)的大小可以在第一次進(jìn)入循環(huán)時(shí)就聲明,不必每次循環(huán)都計(jì)算一遍。例如:  for(inti=0;i

6、要的時(shí)候才創(chuàng)建  舉個(gè)例子說明,就是:  Stringstr="aaa";  if(i==1)  {list.add(str);}  建議替換為:  if(i==1){Stringstr="aaa";list.add(str);}  2.3.4循環(huán)內(nèi)不要不斷創(chuàng)建對(duì)象引用  for(inti=1;i<=count;i++)  {Objectobj=newObject();}  這種做法會(huì)導(dǎo)致內(nèi)存中有count個(gè)Object對(duì)象引用存在,count很大的時(shí)候,很耗費(fèi)內(nèi)存,建議更改為:  Objectobj=null;  for(i

7、nti=0;i<=count;i++)  {obj=newObject();}  修改以后,內(nèi)存中只有一份Object對(duì)象引用。每次new新的Object()對(duì)象的時(shí)候,Object對(duì)象引用指向不同的Object,但是內(nèi)存中只有一份,這樣就大大節(jié)省了內(nèi)存空間?! ?.3.5使用帶緩沖的輸入輸出流進(jìn)行I/O操作,并且及時(shí)關(guān)閉輸入輸出流  帶緩沖的輸入輸出流,即BufferedReader、BufferedWriter、BufferedInputStream、BufferedOutputStream,這可以極大地提升I/O效率。同

8、時(shí)在Java編程過程中,進(jìn)行數(shù)據(jù)庫連接、I/O流操作?r,務(wù)必在使用完畢后及時(shí)關(guān)閉輸入輸出流,以釋放資源。因?yàn)閷?duì)這些大對(duì)象的操作會(huì)造成大的開銷,不注意的話,可能會(huì)導(dǎo)致嚴(yán)重的后果。  2.3.6不讓public方法中有太多的形參  public方法即對(duì)外提供的方法,如果給這些方

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無此問題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。