999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

淺談Java代碼性能優化

2018-12-20 11:29:59陳俟伶重慶工程學院
數碼世界 2018年12期
關鍵詞:效率優化方法

陳俟伶 重慶工程學院

1. 代碼優化細節

1.1 不要導入一些不使用的類,不要創建一些不使用的對象

這毫無意義,如果代碼中出現”The value of the local variable i is not used”、”The import java.util is never used”,那么請刪除這些無用的內容。

1.2 盡量指定方法、類的final修飾符

帶有final修飾符的類是不可派生的。在Java核心API中,有許多應用final的例子,例如java.lang.String,整個類都是final的。為類指定final修飾符可以讓類不可以被繼承,為方法指定final修飾符可以讓方法不可以被重寫。如果指定了一個類為final,則該類所有的方法都是final的。Java編譯器會尋找機會內聯所有的final方法,內聯對于提升Java運行效率作用重大,具體參見Java運行期優化。這樣可以使性能平均提高50%。

1.3 盡量使用局部變量

調用方法時傳遞的參數以及在調用中創建的臨時變量都保存在棧中速度較快,其他變量,如靜態變量、實例變量等,都在堆中創建,速度較慢。另外,棧中創建的變量,隨著方法的運行結束,這些內容就沒了,不需要額外的垃圾回收。

1.4 將常量聲明為static final,并以大寫命名

這樣在編譯期間就可以把這些內容放入常量池中,避免運行期間計算生成常量的值。另外,將常量的名字以大寫命名也可以方便區分出常量與變量

1.5 盡量減少對變量的重復計算

明確一個概念,對方法的調用,即使方法中只有一句語句,也是有消耗的,包括創建棧幀、調用方法時保護現場、調用方法完畢時恢復現場等。所以例如下面的操作:

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

建 議 替 換 為:for (int i = 0, int length = list.size(); i

這樣,在list.size()很大的時候,就減少了很多的消耗

1.6 盡量采用懶加載的策略,即在需要的時候才創建

例如:String str = "aaa";if (i == 1) { list.add(str); }

建議替換為:if (i == 1) { String str = "aaa"; list.add(str); }

1.7 循環內不要不斷創建對象引用

例 如:for (int i = 1; i < count;i++){Object obj =new Object();}

這種做法會導致內存中有count份Object對象引用存在,count很大的話,就耗費內存了,建議為改為:Object obj = null;for (int i = 1; i

這樣的話,內存中只有一份Object對象引用,每次new Object()的時候,Object對象引用指向不同的Object罷了,但是內存中只有一份,這樣就大大節省了內存空間了。

1.8 使用同步代碼塊替代同步方法

除非能確定一整個方法都是需要進行同步的,否則盡量使用同步代碼塊,避免對那些不需要進行同步的代碼也進行了同步,影響了代碼執行效率。

1.9 不要讓public方法中有太多的形參

方法太多形參的話主要有兩點壞處:一是違反了面向對象的編程思想,Java講求一切都是對象,太多的形參,和面向對象的編程思想并不契合。二是參數太多勢必導致方法調用的出錯概率增加。

1.10 把一個基本數據類型轉為字符串,基本數據類型.toString()是最快的方式、String.valueOf(數據)次之、數據+””最慢。

1.11 盡量使用HashMap、ArrayList、StringBuilder,除非線程安全需要,否則不推薦使用Hashtable、Vector、StringBuffer,后三者由于使用同步機制而導致了性能開銷。

1.12 如果能估計到待添加的內容長度,為底層以數組方式實現的集合、工具類指定初始長度

比 如 ArrayList、LinkedLlist、StringBuilder、StringBuffer、HashMap、HashSet等等。

1.13 順序插入和隨機訪問比較多的場景使用ArrayList,元素刪除和中間插入比較多的場景使用LinkedList

1.14 使用最有效率的方式去遍歷Map

遍歷Map的方式有很多,通常場景下我們需要的是遍歷Map中的Key和Value,那么推薦使用的、效率最高的方式是: HashMap map =new HashMap(); map.put("001", " 張三 ");

Set set = map.entrySet(); Iterator it = set.iterator(); while(it.hasNext()) { Map.Entry entry = it.next(); System.out.println(entry.getKey() + " " + entry.getValue()); } 如果你只是想遍歷一下這個Map的key值,那用”Set set = map.keySet();”會比較合適一些。

1.15 不要在循環中使用try…catch…,應該把其放在最外層

1.16 使用帶緩沖的輸入輸出流進行IO操作

帶 緩 沖 的 輸 入 輸 出 流,即 BufferedReader、BufferedWriter、BufferedInputStream、BufferedOutputStream,這可以極大地提升IO效率

1.17 及時關閉流

Java編程過程中,進行數據庫連接、I/O流操作時務必小心,在使用完畢后,及時關閉以釋放資源。因為對這些大對象的操作會造成系統大的開銷,稍有不慎,將會導致嚴重的后果。

1.18 對資源的close()建議分開操作

例如:try{ XXX.close(); YYY.close(); }catch (Exception e) {...}

建議修改為:try{ XXX.close(); }catch (Exception e) {... }try{YYY.close(); }catch (Exception e) {... }雖然有些麻煩,卻能避免資源泄露。優化前,如果XXX.close()拋異常了,那么就進入了cath塊中了,YYY.close()不會執行,YYY這塊資源就不會回收了,一直占用著,這樣的代碼一多,是可能引起資源句柄泄露的。而優化后,就保證了無論如何XXX和YYY都會被close掉。

2. 結束語

代碼優化,一個很重要的課題。可能有些人覺得沒用,一些細小的地方有什么好修改的,改與不改對于代碼的運行效率有什么影響呢?這個問題我是這么考慮的,就像大海里面的鯨魚一樣,它吃一條小蝦米有用嗎?沒用,但是,吃的小蝦米一多之后,鯨魚就被喂飽了。代碼優化也是一樣,如果項目著眼于盡快無BUG上線,那么此時可以抓大放小,代碼的細節可以不精打細磨;但是如果有足夠的時間開發、維護代碼,這時候就必須考慮每個可以優化的細節了,一個一個細小的優化點累積起來,對于代碼的運行效率絕對是有提升的。

猜你喜歡
效率優化方法
超限高層建筑結構設計與優化思考
房地產導刊(2022年5期)2022-06-01 06:20:14
民用建筑防煙排煙設計優化探討
關于優化消防安全告知承諾的一些思考
一道優化題的幾何解法
提升朗讀教學效率的幾點思考
甘肅教育(2020年14期)2020-09-11 07:57:42
用對方法才能瘦
Coco薇(2016年2期)2016-03-22 02:42:52
四大方法 教你不再“坐以待病”!
Coco薇(2015年1期)2015-08-13 02:47:34
捕魚
跟蹤導練(一)2
“錢”、“事”脫節效率低
中國衛生(2014年11期)2014-11-12 13:11:32
主站蜘蛛池模板: 青草视频在线观看国产| 无码啪啪精品天堂浪潮av| 国内精品视频| 欧美日韩资源| 成人免费视频一区二区三区 | 国产情侣一区二区三区| 91在线播放免费不卡无毒| 亚洲国产精品日韩欧美一区| 无码一区二区波多野结衣播放搜索| 男女精品视频| 欧美日韩精品一区二区在线线| 久草热视频在线| 亚洲精品无码不卡在线播放| 人妻免费无码不卡视频| 亚洲综合婷婷激情| 国产成人免费视频精品一区二区| aa级毛片毛片免费观看久| 国产免费自拍视频| 国产一二三区在线| 欧美劲爆第一页| a亚洲天堂| 日韩毛片基地| 精品自窥自偷在线看| 久久婷婷综合色一区二区| 无码一区18禁| 高清精品美女在线播放| 亚洲国产成人无码AV在线影院L| 四虎国产在线观看| 欧美特黄一级大黄录像| 热re99久久精品国99热| 99久久亚洲综合精品TS| 国产精品夜夜嗨视频免费视频| 天天综合色网| 亚洲精品第一页不卡| 日韩免费成人| 小说区 亚洲 自拍 另类| 国产无码精品在线播放| 亚洲欧美日韩另类在线一| 99er精品视频| 91精品网站| 婷婷综合亚洲| 色综合五月| 亚洲日本精品一区二区| 欧洲高清无码在线| 国产精品人莉莉成在线播放| 亚洲九九视频| yjizz视频最新网站在线| 国产极品美女在线| 国产免费精彩视频| 国产波多野结衣中文在线播放 | 热九九精品| 婷婷色婷婷| 国产成人艳妇AA视频在线| 精品久久香蕉国产线看观看gif| 2020国产在线视精品在| 欧美日韩综合网| 久久精品国产精品青草app| 亚洲中文字幕日产无码2021| 久久无码免费束人妻| 免费一级毛片在线观看| 色综合天天操| 操国产美女| 青青网在线国产| 日韩欧美中文| 最新亚洲av女人的天堂| 色婷婷视频在线| 色屁屁一区二区三区视频国产| 国产麻豆另类AV| 亚洲,国产,日韩,综合一区| 国产特级毛片aaaaaaa高清| 91视频国产高清| 国产成a人片在线播放| 久久人人妻人人爽人人卡片av| 91色爱欧美精品www| 理论片一区| 国产拍揄自揄精品视频网站| 亚洲AV无码久久天堂| 亚洲成a人片| 99免费视频观看| 久久精品电影| 久久超级碰| 色欲不卡无码一区二区|