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

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

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

    Goingmm

      BlogJava :: 首頁 :: 新隨筆 ::  :: 聚合  :: 管理 ::
      82 隨筆 :: 15 文章 :: 452 評論 :: 0 Trackbacks

     
      申請這個blog很長時間了.一直沒有機(jī)會發(fā)點(diǎn)帖子(一直想寫點(diǎn)自己的東西,但是沒有能找到合適的主題).今天被同事"嘲笑了一盤".那就來吧,留下點(diǎn)出沒過的痕跡.
          
    小議: J2EE項(xiàng)目 編碼調(diào)優(yōu)

      眼下很多j2ee項(xiàng)目性能不佳的主要瓶頸并不是發(fā)生在編碼.但是無謂的系統(tǒng)開銷,糾纏不清,饒來饒去的業(yè)務(wù)邏輯.這些都是可以避免的.可能每一個程序員都希望自己能寫出高效的,漂亮的代碼吧.至少我是帶著這點(diǎn)想法,開始尋求解決辦法的...
         
     下面的部分內(nèi)容是針對實(shí)際項(xiàng)目中遇到的情況.舉例一些例子,只是為了更好的表達(dá)僵硬的描述.

     1) 避免對象的重復(fù)創(chuàng)建

      ■ 對象的創(chuàng)建對于系統(tǒng)內(nèi)存而言是非常昂貴的.在非必要的時候應(yīng)該避免重復(fù)創(chuàng)建對象.需要的時候聲明它,初始化它,不要重復(fù)初始化一個對象,盡量
       能做到再使用,而用完后置null有利于垃圾收集。
        
           比如: request.getSession().removeAttribute("XXXX_XXXX");
          ................................................ ;
         修改: HttpSession obj = request.getSession();
          obj.removeAttribute("XXXX_XXXX");
          ............................... ;
          obj = null;

      ■ 避免方法的非必要重復(fù)調(diào)用
        比如:
          for(int i=0;i    修改:
          int size = obj.size();
                              for(int i=0;i

      ■ 讓類實(shí)現(xiàn)Cloneable接口,同時采用工廠模式,將減少類的創(chuàng)建,每次都是通過clone()方法來獲得對象。
      ■ 另外使用接口也能減少類的創(chuàng)建
      ■ 對于成員變量的初始化也應(yīng)盡量避免,特別是在一個類派生另一個類時.

    2)  使用合適的類型
       當(dāng)原始類型不能滿足我們要求時,使用復(fù)雜類型。String和StringBuffer的區(qū)別自不必說了,是我們使用最多的類型,在涉及到字符運(yùn)算時,強(qiáng)烈建議使
      用StringBuffer。在做String匹配時使用intern()代替equal().
      
       +--------------------------------------------------------------
       |  關(guān)于 public native String intern() :
       |  返回一個字符串對象的規(guī)范表示法。
       |  如果 s 和 t 是 s.equals(t) 類型的字符串,那就保證了 s.intern() == t.intern()
       | 返回:
       |      一個同該字符串內(nèi)容相同的字符串,但是來自于唯一字符串的緩沖池
       +-----------------------------------------------------------------

    3)  常用容器的選擇
         ArrayList和Vector,HashMap和Hashtable是我們經(jīng)常用到的類,前者不支持同步,后者支持同步,前者性能更好,大多數(shù)情況下選擇前者

    4)  final 的使用
          帶有final修飾符的類是不可派生的, 如果指定一個類為final,則該類所有的方法都是final,Java編譯器會尋找機(jī)會內(nèi)聯(lián)所有的final方法,
     這將能夠使性能平均提高50%。類的屬性和方式 使用final或者static修飾符也是有好處的,但是一定要慎用,對他的使用需要做性能和后
     果權(quán)衡.
      
       建議InitXxxAction中:需要拿一些parameter的時候可以寫成final的"小方法".
       比如:
      private final WebForward retrieveParam(WebActionMapping mapping,HttpServletRequest request){
             // TODO....
      }

    5)調(diào)用方法時傳遞的參數(shù)以及在調(diào)用中創(chuàng)建的臨時變量都保存在棧(Stack)中,速度較快。所以盡量使用局部變量

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

    7)善用調(diào)試
             ■ 代碼中不要留下硬調(diào)語句 比如: System.out.println()  
             ■ 應(yīng)該選用和配置的調(diào)試工具.實(shí)施后都應(yīng)該關(guān)閉輸出 比如:log4j
             ■ 盡量少用串行化、同步操作和耗時昂貴的服務(wù) 比如:Date()


      暫時寫下這些吧!第一次寫blog感覺有點(diǎn)累人呢!有什么新的體會再補(bǔ)充...

     

     

     

    posted on 2005-10-09 17:35 Goingmm 閱讀(383) 評論(2)  編輯  收藏 所屬分類: Java

    評論

    # re: J2EE項(xiàng)目 編碼調(diào)優(yōu) 2005-10-09 17:48 Noshoeman
    性感的沙發(fā)~~  回復(fù)  更多評論
      

    # re: J2EE項(xiàng)目 編碼調(diào)優(yōu) 2005-10-26 10:05 9527
    有些有道理,有些值得商榷......  回復(fù)  更多評論
      


    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 久久精品乱子伦免费| 亚洲国产成人久久一区二区三区 | 中文在线观看免费网站| WWW国产成人免费观看视频| 国产免费高清69式视频在线观看| 久久国产免费观看精品3| 无码免费午夜福利片在线| 国产精品无码一二区免费| 亚洲精品视频免费| 亚洲AV无码一区二区三区DV| 亚洲中文字幕久久久一区| 在线观看人成视频免费无遮挡| 1000部拍拍拍18免费网站| 成人五级毛片免费播放| 久久精品国产亚洲7777| 亚洲制服在线观看| 久青草国产免费观看| 18女人水真多免费高清毛片| 亚洲人成人无码网www国产| 久久不见久久见免费影院www日本| 亚洲国产综合无码一区| 性色av极品无码专区亚洲| 亚洲一级毛片免费在线观看| 久久精品国产亚洲AV忘忧草18 | 永久免费不卡在线观看黄网站| 日韩中文字幕在线免费观看| 久久亚洲中文字幕精品有坂深雪| xxxxxx日本处大片免费看| 国产亚洲精品va在线| 国产桃色在线成免费视频| 91精品国产亚洲爽啪在线观看| 一级成人a做片免费| 亚洲影院在线观看| 精品少妇人妻AV免费久久洗澡| 亚洲小视频在线播放| 日韩免费无码一区二区三区| 久久久久亚洲精品成人网小说| 午夜肉伦伦影院久久精品免费看国产一区二区三区 | 四虎在线最新永久免费| 欧美激情综合亚洲一二区| 亚洲日产韩国一二三四区|