Java編程之提高性能簡單總結(jié)篇

開發(fā)者在編程中除了要對有編程規(guī)范,還要注意性能哦,今天就工作中遇到的一些問題進行了一個簡單總結(jié),希望攻城獅來批評指正。

作為一個QA,從質(zhì)量管理方面得到的認(rèn)識:

a.一行代碼能解決的問題 盡量不要使用多行,代碼行數(shù)越多 維護成本越高,出現(xiàn)缺陷的概率也就越多

b.一行代碼編寫可能只需要30s,發(fā)現(xiàn)并優(yōu)化一行代碼產(chǎn)生的性能問題需要72h,甚至更多


不說了,下面就簡單說下實際編程過程中性能相關(guān)的問題吧:

1、循環(huán)邏輯中減少創(chuàng)建對象次數(shù)

例如:for(int i = 0;i < list.size; i ++) {

}

應(yīng)替換為:

for(int i = 0,int len = list.size();i < len; i ++) {

}

2、循環(huán)結(jié)構(gòu)是否存在多次訪問網(wǎng)絡(luò)、數(shù)據(jù)庫等 操作

原則:能夠一次性查詢完成的 盡量避免多次查詢

優(yōu)化前:

優(yōu)化后:

3、對象容錯性差

原則:參數(shù)傳遞過程中不要直接轉(zhuǎn)換使用JSONObject這種對象,如果取值不存在該方法會報異常導(dǎo)致程序中止,盡量轉(zhuǎn)為JavaBean或Map;否則應(yīng)先判斷取的值是否存在。最好以JavaBean封裝接收參數(shù),并對參數(shù)進行初步較驗,不能將數(shù)據(jù)完整性交給前端處理。

如果使用JSONObject對象,應(yīng)先進行存在判斷if(json.contains(“xxx”))


4、對需要緩存的信息進行合理設(shè)計

原則:登錄功能要分析哪些是跟用戶密切相關(guān)的,如session信息,哪些是跟業(yè)務(wù)系統(tǒng)屬性相關(guān)的,如 系統(tǒng)配置資源信息。后者則應(yīng)當(dāng)進行緩存處理,避免每次登錄都構(gòu)建獲取信息。

5、業(yè)務(wù)邏輯的執(zhí)行順序問題

原則:在進行邏輯判斷的過程中,盡量使復(fù)雜操作延遲執(zhí)行,不要提前執(zhí)行;如登錄操作,只有登錄成功后才做相關(guān)資源加載、查詢操作;

如示例: 靜態(tài)資源應(yīng)盡量后置,建議大家在業(yè)務(wù)邏輯梳理時先否定再肯定,也就是先列不滿足業(yè)務(wù)的條件。

優(yōu)化前:

優(yōu)化后:

6、? Try…catch 相對消耗性能比較嚴(yán)重,盡量減少使用頻率,使用中盡量擴大作用范圍,禁止出現(xiàn)在循環(huán)等操作中

7、? 創(chuàng)建類似數(shù)組等可以設(shè)定大小的對象,應(yīng)盡可能指定大小,最大限度減少內(nèi)存空間的浪費

8、? HashMap的讀取遍歷使用entry,而不是先取key集合,再取值

9、? 在方法中創(chuàng)建的對象最好在使用完畢后將引用指向null,利于GC垃圾回收

10、? 數(shù)組復(fù)制使用system.arraycopy(),減少使用創(chuàng)建新數(shù)組賦值的方法

11、? 方法大小不要超過80行,方法棧太深容易導(dǎo)致內(nèi)存溢出;盡量不要出現(xiàn)功能太少的類,類的維護也需要性能開銷。

12、? 創(chuàng)建復(fù)雜對象應(yīng)使用clone方法,減少構(gòu)造方法調(diào)用的開銷

13、 ? 待續(xù)...

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容