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

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

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

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

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


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

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

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

}

應替換為:

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

}

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

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

優(yōu)化前:

優(yōu)化后:

3、對象容錯性差

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

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


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

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

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

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

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

優(yōu)化前:

優(yōu)化后:

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

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

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

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

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

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

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

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,763評論 6 539
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,238評論 3 428
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 177,823評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,604評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,339評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,713評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,712評論 3 445
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,893評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,448評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 41,201評論 3 357
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,397評論 1 372
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,944評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,631評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,033評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,321評論 1 293
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,128評論 3 398
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,347評論 2 377

推薦閱讀更多精彩內(nèi)容