成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

Java 編程:如何提高性能?(簡(jiǎn)單總結(jié)篇)

fuchenxuan / 2354人閱讀

摘要:開(kāi)發(fā)者在編程中除了要有編程規(guī)范,還要注意性能哦,今天就工作中遇到的一些問(wèn)題進(jìn)行了一個(gè)簡(jiǎn)單總結(jié),希望攻城獅來(lái)批評(píng)指正。

開(kāi)發(fā)者在編程中除了要有編程規(guī)范,還要注意性能,在 Java 編程中有什么提高性能的好辦法呢?

本文轉(zhuǎn)自國(guó)內(nèi) ITOM 行業(yè)領(lǐng)軍企業(yè) OneAPM Cloud Insight(一款能夠優(yōu)雅監(jiān)控多種操作系統(tǒng)、數(shù)據(jù)庫(kù)、中間件、云主機(jī)的解決方案)美女工程師陳永梅簡(jiǎn)書(shū)。

開(kāi)發(fā)者在編程中除了要有編程規(guī)范,還要注意性能哦,今天就工作中遇到的一些問(wèn)題進(jìn)行了一個(gè)簡(jiǎn)單總結(jié),希望攻城獅來(lái)批評(píng)指正。

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

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

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

不說(shuō)了,下面就簡(jiǎn)單說(shuō)下實(shí)際編程過(guò)程中性能相關(guān)的問(wèn)題吧:

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

例如:

for(int i = 0;i < list.size; i ++) {
…
}

應(yīng)替換為:

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

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

原則:能夠一次性查詢(xún)完成的 盡量避免多次查詢(xún)。

優(yōu)化前:

優(yōu)化后:

3、對(duì)象容錯(cuò)性差

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

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

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

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

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

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

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

優(yōu)化前:

優(yōu)化后:

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

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

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

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

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

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

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

13、待續(xù)...

Cloud Insight 集監(jiān)控、管理、計(jì)算、協(xié)作、可視化于一身的數(shù)據(jù)管理平臺(tái),幫助所有 IT 公司,減少在系統(tǒng)監(jiān)控上的人力和時(shí)間成本投入,讓運(yùn)維工作更加高效、簡(jiǎn)單。
本文轉(zhuǎn)自 OneAPM 官方博客

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/65553.html

相關(guān)文章

  • 后臺(tái)開(kāi)發(fā)常問(wèn)面試題集錦(問(wèn)題搬運(yùn)工,附鏈接)

    摘要:基礎(chǔ)問(wèn)題的的性能及原理之區(qū)別詳解備忘筆記深入理解流水線(xiàn)抽象關(guān)鍵字修飾符知識(shí)點(diǎn)總結(jié)必看篇中的關(guān)鍵字解析回調(diào)機(jī)制解讀抽象類(lèi)與三大特征時(shí)間和時(shí)間戳的相互轉(zhuǎn)換為什么要使用內(nèi)部類(lèi)對(duì)象鎖和類(lèi)鎖的區(qū)別,,優(yōu)缺點(diǎn)及比較提高篇八詳解內(nèi)部類(lèi)單例模式和 Java基礎(chǔ)問(wèn)題 String的+的性能及原理 java之yield(),sleep(),wait()區(qū)別詳解-備忘筆記 深入理解Java Stream流水...

    spacewander 評(píng)論0 收藏0
  • 后臺(tái)開(kāi)發(fā)常問(wèn)面試題集錦(問(wèn)題搬運(yùn)工,附鏈接)

    摘要:基礎(chǔ)問(wèn)題的的性能及原理之區(qū)別詳解備忘筆記深入理解流水線(xiàn)抽象關(guān)鍵字修飾符知識(shí)點(diǎn)總結(jié)必看篇中的關(guān)鍵字解析回調(diào)機(jī)制解讀抽象類(lèi)與三大特征時(shí)間和時(shí)間戳的相互轉(zhuǎn)換為什么要使用內(nèi)部類(lèi)對(duì)象鎖和類(lèi)鎖的區(qū)別,,優(yōu)缺點(diǎn)及比較提高篇八詳解內(nèi)部類(lèi)單例模式和 Java基礎(chǔ)問(wèn)題 String的+的性能及原理 java之yield(),sleep(),wait()區(qū)別詳解-備忘筆記 深入理解Java Stream流水...

    xfee 評(píng)論0 收藏0
  • 后臺(tái)開(kāi)發(fā)常問(wèn)面試題集錦(問(wèn)題搬運(yùn)工,附鏈接)

    摘要:基礎(chǔ)問(wèn)題的的性能及原理之區(qū)別詳解備忘筆記深入理解流水線(xiàn)抽象關(guān)鍵字修飾符知識(shí)點(diǎn)總結(jié)必看篇中的關(guān)鍵字解析回調(diào)機(jī)制解讀抽象類(lèi)與三大特征時(shí)間和時(shí)間戳的相互轉(zhuǎn)換為什么要使用內(nèi)部類(lèi)對(duì)象鎖和類(lèi)鎖的區(qū)別,,優(yōu)缺點(diǎn)及比較提高篇八詳解內(nèi)部類(lèi)單例模式和 Java基礎(chǔ)問(wèn)題 String的+的性能及原理 java之yield(),sleep(),wait()區(qū)別詳解-備忘筆記 深入理解Java Stream流水...

    makeFoxPlay 評(píng)論0 收藏0
  • 后端知識(shí)- 收藏集 - 掘金

    摘要:常見(jiàn)的八大排序算法,他們之間關(guān)系如下被人忽視的面向?qū)ο蟮牧笤瓌t后端掘金前言作為文集的第一篇,我覺(jué)得有必要介紹一下大概的寫(xiě)作規(guī)劃。 Java多線(xiàn)程干貨系列—(四)volatile關(guān)鍵字| 掘金技術(shù)征文 - 掘金原本地址:Java多線(xiàn)程干貨系列—(四)volatile關(guān)鍵字博客地址:http://tengj.top/ 前言 今天介紹下volatile關(guān)鍵字,volatile這個(gè)關(guān)鍵字可能...

    Youngdze 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<