Java 编程:如何提高性能?(简单总结篇)
2019獨角獸企業重金招聘Python工程師標準>>>
開發者在編程中除了要有編程規范,還要注意性能,在 Java 編程中有什么提高性能的好辦法呢?
本文轉自國內 ITOM 行業領軍企業 OneAPM Cloud Insight(一款能夠優雅監控多種操作系統、數據庫、中間件、云主機的解決方案)美女工程師陳永梅簡書。
開發者在編程中除了要有編程規范,還要注意性能哦,今天就工作中遇到的一些問題進行了一個簡單總結,希望攻城獅來批評指正。
作為一個QA,從質量管理方面得到的認識:
- 一行代碼能解決的問題 盡量不要使用多行,代碼行數越多 維護成本越高,出現缺陷的概率也就越多;
- 一行代碼編寫可能只需要 30s,發現并優化一行代碼產生的性能問題需要 72h,甚至更多。
不說了,下面就簡單說下實際編程過程中性能相關的問題吧:
1、循環邏輯中減少創建對象次數
例如:
for(int i = 0;i < list.size; i ++) { … }應替換為:
for(int i = 0,int len = list.size();i < len; i ++) { … }2、關注循環結構是否存在多次訪問網絡、數據庫等操作
原則:能夠一次性查詢完成的 盡量避免多次查詢。
優化前:
優化后:
3、對象容錯性差
原則:參數傳遞過程中不要直接轉換使用 JSONObject 這種對象,如果取值不存在該方法會報異常導致程序中止,盡量轉為 JavaBean 或 Map;否則應先判斷取的值是否存在。最好以 JavaBean 封裝接收參數,并對參數進行初步較驗,不能將數據完整性交給前端處理。
如果使用 JSONObject 對象,應先進行存在判斷if(json.contains(“xxx”))
4、對需要緩存的信息進行合理設計
原則:登錄功能要分析哪些是跟用戶密切相關的,如 session 信息,哪些是跟業務系統屬性相關的,如系統配置資源信息。后者則應當進行緩存處理,避免每次登錄都構建獲取信息。
5、業務邏輯的執行順序問題
原則:在進行邏輯判斷的過程中,盡量使復雜操作延遲執行,不要提前執行;如登錄操作,只有登錄成功后才做相關資源加載、查詢操作;
如示例:靜態資源應盡量后置,建議大家在業務邏輯梳理時先否定再肯定,也就是先列不滿足業務的條件。
優化前:
優化后:
6、Try…catch 相對消耗性能比較嚴重,盡量減少使用頻率,使用中盡量擴大作用范圍,禁止出現在循環等操作中。
7、創建類似數組等可以設定大小的對象,應盡可能指定大小,最大限度減少內存空間的浪費。
8、HashMap 的讀取遍歷使用 entry,而不是先取 key 集合,再取值。
9、在方法中創建的對象最好在使用完畢后將引用指向 null,利于 GC 垃圾回收。
10、數組復制使用 system.arraycopy(),減少使用創建新數組賦值的方法。
11、方法大小不要超過80行,方法棧太深容易導致內存溢出;盡量不要出現功能太少的類,類的維護也需要性能開銷。
12、創建復雜對象應使用clone方法,減少構造方法調用的開銷。
13、待續...
Cloud Insight 集監控、管理、計算、協作、可視化于一身的數據管理平臺,幫助所有 IT 公司,減少在系統監控上的人力和時間成本投入,讓運維工作更加高效、簡單。 本文轉自 OneAPM 官方博客
轉載于:https://my.oschina.net/oneapmofficial/blog/626404
總結
以上是生活随笔為你收集整理的Java 编程:如何提高性能?(简单总结篇)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [小技巧][JAVA][转换]整型int
- 下一篇: 【小技巧】【Java】 创建指定数目m的