<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-6  評(píng)論-1  文章-0  trackbacks-0
      2012年3月15日
         摘要:   閱讀全文
    posted @ 2012-04-14 09:36 gzakoa 閱讀(497) | 評(píng)論 (0)編輯 收藏
         摘要:   閱讀全文
    posted @ 2012-03-31 11:01 gzakoa 閱讀(1777) | 評(píng)論 (1)編輯 收藏
         摘要:   閱讀全文
    posted @ 2012-03-22 09:15 gzakoa 閱讀(295) | 評(píng)論 (0)編輯 收藏
    可供程序利用的資源(內(nèi)存、CPU時(shí)間、網(wǎng)絡(luò)帶寬等)是有限的,網(wǎng)站優(yōu)化的目的就是讓程序用盡可能少的資源完成預(yù)定的任務(wù)。網(wǎng)站優(yōu)化通常包含兩方面的內(nèi)容:減小代碼的體積和提高代碼的運(yùn)行效率。減小代碼的體積已經(jīng)寫過(guò)太多這類的文章了,下面就簡(jiǎn)單討論下如何提高代碼的效率。


        一、不用new關(guān)鍵詞創(chuàng)建類的實(shí)例用new關(guān)鍵詞創(chuàng)建類的實(shí)例時(shí),構(gòu)造函數(shù)鏈中的所有構(gòu)造函數(shù)都會(huì)被自動(dòng)調(diào)用。但如果一個(gè)對(duì)象實(shí)現(xiàn)了Cloneable接口,我們可以調(diào)用它的clone()方法。clone()方法不會(huì)調(diào)用任何類構(gòu)造函數(shù)。


        在使用設(shè)計(jì)模式(DesignPattern)的場(chǎng)合,如果用Factory模式創(chuàng)建對(duì)象,則改用clone()方法創(chuàng)建新的對(duì)象實(shí)例非常簡(jiǎn)單。


        二、使用非阻塞I/O版本較低的JDK不支持非阻塞I/OAPI。為避免I/O阻塞,一些應(yīng)用采用了創(chuàng)建大量線程的辦法(在較好的情況下,會(huì)使用一個(gè)緩沖池)。這種技術(shù)可以在許多必須支持并發(fā)I/O流的應(yīng)用中見到,如Web服務(wù)器、報(bào)價(jià)和拍賣應(yīng)用等。然而,創(chuàng)建Java線程需要相當(dāng)可觀的開銷。JDK1.4引入了非阻塞的I/O庫(kù)(java.nio)。如果應(yīng)用要求使用版本較早的JDK,需要支持非阻塞I/O的軟件包。


        三、慎用異常異常對(duì)性能不利。拋出異常首先要?jiǎng)?chuàng)建一個(gè)新的對(duì)象。Throwable接口的構(gòu)造函數(shù)調(diào)用名為fillInStackTrace()的本地(Native)方法,fillInStackTrace()方法檢查堆棧,收集調(diào)用跟蹤信息。只要有異常被拋出,VM就必須調(diào)整調(diào)用堆棧,因?yàn)樵谔幚磉^(guò)程中創(chuàng)建了一個(gè)新的對(duì)象。異常只能用于錯(cuò)誤處理,不應(yīng)該用來(lái)控制程序流程。


        四、不要重復(fù)初始化變量默認(rèn)情況下,調(diào)用類的構(gòu)造函數(shù)時(shí),Java會(huì)把變量初始化成確定的值:所有的對(duì)象被設(shè)置成null,整數(shù)變量(byte、short、int、long)設(shè)置成0,float和double變量設(shè)置成0.0,邏輯值設(shè)置成false。當(dāng)一個(gè)類從另一個(gè)類派生時(shí),這一點(diǎn)尤其應(yīng)該注意,因?yàn)橛胣ew關(guān)鍵詞創(chuàng)建一個(gè)對(duì)象時(shí),構(gòu)造函數(shù)鏈中的所有構(gòu)造函數(shù)都會(huì)被自動(dòng)調(diào)用。


        五、盡量指定類的final修飾符帶有final修飾符的類是不可派生的。在Java核心API中,有許多應(yīng)用final的例子,例如java.lang.String。為String類指定final防止了人們覆蓋length()方法。另外,如果指定一個(gè)類為final,則該類所有的方法都是final。Java編譯器會(huì)尋找機(jī)會(huì)內(nèi)聯(lián)(inline)所有的final方法(這和具體的編譯器實(shí)現(xiàn)有關(guān))。此舉能夠使性能平均提高50%。


        六、盡量使用局部變量調(diào)用方法時(shí)傳遞的參數(shù)以及在調(diào)用中創(chuàng)建的臨時(shí)變量都保存在棧(Stack)中,速度較快。其他變量,如靜態(tài)變量、實(shí)例變量等,都在堆(Heap)中創(chuàng)建,速度較慢。另外,依賴于具體的編譯器/JVM,局部變量還可能得到進(jìn)一步優(yōu)化。請(qǐng)參見《盡可能使用堆棧變量》。


        七、乘法和除法修改后的代碼不再做乘以的操作,而是改用等價(jià)的左移的操作,每左移1位相當(dāng)于乘以2。相應(yīng)地,右移1位操作相當(dāng)于除以2。值得一提的是,雖然移位操作速度快,但可能使代碼比較難于理解,所以最好加上一些注釋。

    posted @ 2012-03-15 22:28 gzakoa 閱讀(401) | 評(píng)論 (0)編輯 收藏
    主站蜘蛛池模板: 麻豆成人精品国产免费| baoyu122.永久免费视频| 亚洲综合一区国产精品| 亚洲欧洲国产综合| 亚洲精品自在线拍| 亚洲日本va在线观看| 亚洲中文字幕AV在天堂| 亚洲狠狠婷婷综合久久蜜芽| 亚洲男人的天堂网站| 亚洲AV成人无码久久WWW| 国产亚洲蜜芽精品久久| 日韩久久无码免费毛片软件| 一个人免费观看日本www视频| 4hu四虎免费影院www| 中文字幕免费播放| 久久精品国产这里是免费| 4399影视免费观看高清直播| 波多野结衣中文字幕免费视频| 成人免费毛片内射美女-百度| 无码视频免费一区二三区| 拔擦拔擦8x华人免费久久| 亚洲国产午夜福利在线播放 | 日韩在线视频播放免费视频完整版| 国产偷国产偷亚洲高清人| 国产福利免费视频| 国产精成人品日日拍夜夜免费| 精品久久8x国产免费观看| 成人免费视频软件网站| 亚洲国产高清精品线久久| 亚洲人成色777777在线观看| 色拍自拍亚洲综合图区| 亚洲乱亚洲乱妇无码| 免费人成视频在线播放| 中文字幕视频在线免费观看| 久久免费看黄a级毛片| 日韩中文字幕在线免费观看| 亚洲视频在线一区二区| 亚洲视频2020| 美女裸体无遮挡免费视频网站| 国产成人无码区免费网站| 一级女人18毛片免费|