<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 閱讀(499) | 評(píng)論 (0)編輯 收藏
         摘要:   閱讀全文
    posted @ 2012-03-31 11:01 gzakoa 閱讀(1781) | 評(píng)論 (1)編輯 收藏
         摘要:   閱讀全文
    posted @ 2012-03-22 09:15 gzakoa 閱讀(298) | 評(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)寫(xiě)過(guò)太多這類(lèi)的文章了,下面就簡(jiǎn)單討論下如何提高代碼的效率。


        一、不用new關(guān)鍵詞創(chuàng)建類(lèi)的實(shí)例用new關(guān)鍵詞創(chuàng)建類(lèi)的實(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)用任何類(lèi)構(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)建大量線(xiàn)程的辦法(在較好的情況下,會(huì)使用一個(gè)緩沖池)。這種技術(shù)可以在許多必須支持并發(fā)I/O流的應(yīng)用中見(jiàn)到,如Web服務(wù)器、報(bào)價(jià)和拍賣(mài)應(yīng)用等。然而,創(chuàng)建Java線(xiàn)程需要相當(dāng)可觀的開(kāi)銷(xiāo)。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)用類(lèi)的構(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è)類(lèi)從另一個(gè)類(lèi)派生時(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)用。


        五、盡量指定類(lèi)的final修飾符帶有final修飾符的類(lèi)是不可派生的。在Java核心API中,有許多應(yīng)用final的例子,例如java.lang.String。為String類(lèi)指定final防止了人們覆蓋length()方法。另外,如果指定一個(gè)類(lèi)為final,則該類(lèi)所有的方法都是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)建,速度較慢。另外,依賴(lài)于具體的編譯器/JVM,局部變量還可能得到進(jìn)一步優(yōu)化。請(qǐng)參見(jiàn)《盡可能使用堆棧變量》。


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

    posted @ 2012-03-15 22:28 gzakoa 閱讀(403) | 評(píng)論 (0)編輯 收藏
    主站蜘蛛池模板: 你是我的城池营垒免费看 | 特级精品毛片免费观看| 亚洲国模精品一区| 美女免费视频一区二区| 亚洲精品成人区在线观看| 一级一级一级毛片免费毛片| 亚洲中文字幕无码爆乳av中文| 美女免费精品高清毛片在线视| 免费吃奶摸下激烈视频| 无码毛片一区二区三区视频免费播放| 成人亚洲综合天堂| 国产免费A∨在线播放| 国产∨亚洲V天堂无码久久久| 男人进去女人爽免费视频国产| 亚洲激情视频在线观看| 亚洲人成色7777在线观看不卡 | 国产高清在线精品免费软件| 婷婷国产偷v国产偷v亚洲| 亚洲电影日韩精品| 成人网站免费看黄A站视频| 中文字幕亚洲综合久久| 青青草免费在线视频| 久久亚洲国产精品| 午夜国产精品免费观看| 亚洲成在人线aⅴ免费毛片| 全黄a免费一级毛片人人爱| 97超高清在线观看免费视频| 久久久无码精品亚洲日韩京东传媒| 国产啪精品视频网免费| 国产成人综合久久精品亚洲| 久久亚洲精品中文字幕三区| 色老头永久免费网站| 羞羞网站在线免费观看| 亚洲三级电影网址| 成在线人永久免费视频播放| 毛片基地看看成人免费| 亚洲www77777| 亚洲成Av人片乱码色午夜| 四虎成人免费观看在线网址 | 色婷婷精品免费视频| 久久久久久亚洲AV无码专区|