亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        淺談Java代碼性能優(yōu)化

        2018-12-20 11:29:59陳俟伶重慶工程學(xué)院
        數(shù)碼世界 2018年12期
        關(guān)鍵詞:效率優(yōu)化方法

        陳俟伶 重慶工程學(xué)院

        1. 代碼優(yōu)化細(xì)節(jié)

        1.1 不要導(dǎo)入一些不使用的類,不要創(chuàng)建一些不使用的對象

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

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

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

        1.3 盡量使用局部變量

        調(diào)用方法時傳遞的參數(shù)以及在調(diào)用中創(chuàng)建的臨時變量都保存在棧中速度較快,其他變量,如靜態(tài)變量、實(shí)例變量等,都在堆中創(chuàng)建,速度較慢。另外,棧中創(chuàng)建的變量,隨著方法的運(yùn)行結(jié)束,這些內(nèi)容就沒了,不需要額外的垃圾回收。

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

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

        1.5 盡量減少對變量的重復(fù)計(jì)算

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

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

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

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

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

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

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

        1.7 循環(huán)內(nèi)不要不斷創(chuàng)建對象引用

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

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

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

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

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

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

        方法太多形參的話主要有兩點(diǎn)壞處:一是違反了面向?qū)ο蟮木幊趟枷?,Java講求一切都是對象,太多的形參,和面向?qū)ο蟮木幊趟枷氩⒉黄鹾?。二是參?shù)太多勢必導(dǎo)致方法調(diào)用的出錯概率增加。

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

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

        1.12 如果能估計(jì)到待添加的內(nèi)容長度,為底層以數(shù)組方式實(shí)現(xiàn)的集合、工具類指定初始長度

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

        1.13 順序插入和隨機(jī)訪問比較多的場景使用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 不要在循環(huán)中使用try…catch…,應(yīng)該把其放在最外層

        1.16 使用帶緩沖的輸入輸出流進(jìn)行IO操作

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

        1.17 及時關(guān)閉流

        Java編程過程中,進(jìn)行數(shù)據(jù)庫連接、I/O流操作時務(wù)必小心,在使用完畢后,及時關(guān)閉以釋放資源。因?yàn)閷@些大對象的操作會造成系統(tǒng)大的開銷,稍有不慎,將會導(dǎo)致嚴(yán)重的后果。

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

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

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

        2. 結(jié)束語

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

        猜你喜歡
        效率優(yōu)化方法
        超限高層建筑結(jié)構(gòu)設(shè)計(jì)與優(yōu)化思考
        民用建筑防煙排煙設(shè)計(jì)優(yōu)化探討
        關(guān)于優(yōu)化消防安全告知承諾的一些思考
        一道優(yōu)化題的幾何解法
        提升朗讀教學(xué)效率的幾點(diǎn)思考
        甘肅教育(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
        捕魚
        跟蹤導(dǎo)練(一)2
        亚洲24小时在线免费视频网站| 精品乱码久久久久久久| 国产精品福利自产拍久久| 在线观看精品国产福利片100| 日韩中文字幕一区二十| 国产禁区一区二区三区| 亚洲国产成人久久综合下载| 色综合久久综合欧美综合图片 | 午夜三级a三级三点| 97在线视频免费| 免费在线观看草逼视频| 在线无码中文字幕一区| 少妇人妻偷人精品免费视频| 99久久99久久久精品久久| 日韩人妻大奶子生活片| 人人超碰人人爱超碰国产| 一本无码人妻在中文字幕免费| 91精品91| 日本高清一区二区不卡| 丰满少妇被粗大猛烈进人高清| 蜜桃精品免费久久久久影院 | 亚洲国产人成自精在线尤物| 精品国产sm最大网站| 婷婷五月综合丁香在线| 色综合色综合久久综合频道| 亚洲综合久久精品少妇av | 麻豆成人久久精品二区三区免费| 337p粉嫩日本欧洲亚洲大胆| 人成午夜免费大片| 国产精品女同学| 国产日韩精品中文字幕| 激情第一区仑乱| 正在播放淫亚洲| 不卡免费在线亚洲av| 亚洲综合久久精品少妇av| 国产人成无码视频在线观看| 国产精品嫩草影院AV| 日韩精品极品在线观看视频| 蜜桃视频在线看一区二区三区| 亚洲欧洲偷自拍图片区| 麻豆国产AV网站|