• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    Java性能

    發布: 2011-1-19 09:20 | 作者: 不詳 | 來源: 領測測試網采編 | 查看: 109次 | 進入軟件測試論壇討論

    領測軟件測試網

      下面是加快Java程序關鍵部分執行速度的一些常規操作建議(注意對比修改前后的測試結果)。

      將... 修改成... 理由

      接口 抽象類(只需一個父時) 接口的多個繼承會妨礙性能的優化

      非本地或數組循環變量 本地循環變量 根據前表的耗時比較,一次實例整數賦值的時間是本地整數賦值時間的1.2倍,但數組賦值的時間是本地整數賦值的2.7倍

      鏈接列表(固定尺寸) 保存丟棄的鏈接項目,或將列表替換成一個循環數組(大致知道尺寸) 每新建一個對象,都相當于本地賦值980次。參考“重復利用對象”(下一節)、Van Wyk[12] p.87以及Bentley[15] p.81

      x/2(或2的任意次冪) X>>2(或2的任意次冪) 使用更快的硬件指令

      D.3.3 特殊情況

      ■字串的開銷:字串連接運算符+看似簡單,但實際需要消耗大量系統資源。編譯器可高效地連接字串,但變量字串卻要求可觀的處理器時間。例如,假設s和t是字串變量:

      System.out.println("heading" + s + "trailer" + t);

      上述語句要求新建一個StringBuffer(字串緩沖),追加自變量,然后用toString()將結果轉換回一個字串。因此,無論磁盤空間還是處理器時間,都會受到嚴重消耗。若準備追加多個字串,則可考慮直接使用一個字串緩沖——特別是能在一個循環里重復利用它的時候。通過在每次循環里禁止新建一個字串緩沖,可節省980單位的對象創建時間(如前所述)。利用substring()以及其他字串方法,可進一步地改善性能。如果可行,字符數組的速度甚至能夠更快。也要注意由于同步的關系,所以StringTokenizer會造成較大的開銷。

      ■同步:在JDK解釋器中,調用同步方法通常會比調用不同步方法慢10倍。經JIT編譯器處理后,這一性能上的差距提升到50到100倍(注意前表總結的時間顯示出要慢97倍)。所以要盡可能避免使用同步方法——若不能避免,方法的同步也要比代碼塊的同步稍快一些。

      ■重復利用對象:要花很長的時間來新建一個對象(根據前表總結的時間,對象的新建時間是賦值時間的980倍,而新建一個小數組的時間是賦值時間的3100倍)。因此,最明智的做法是保存和更新老對象的字段,而不是創建一個新對象。例如,不要在自己的paint()方法中新建一個Font對象。相反,應將其聲明成實例對象,再初始化一次。在這以后,可在paint()里需要的時候隨時進行更新。參見Bentley編著的《編程拾貝》,p.81[15]。

      ■異常:只有在不正常的情況下,才應放棄異常處理模塊。什么才叫“不正!蹦?這通常是指程序遇到了問題,而這一般是不愿見到的,所以性能不再成為優先考慮的目標。進行優化時,將小的“try-catch”塊合并到一起。由于這些塊將代碼分割成小的、各自獨立的片斷,所以會妨礙編譯器進行優化。另一方面,若過份熱衷于刪除異常處理模塊,也可能造成代碼健壯程度的下降。

      ■散列處理:首先,Java 1.0和1.1的標準“散列表”(Hashtable)類需要造型以及特別消耗系統資源的同步處理(570單位的賦值時間)。其次,早期的JDK庫不能自動決定最佳的表格尺寸。最后,散列函數應針對實際使用項(Key)的特征設計?紤]到所有這些原因,我們可特別設計一個散列類,令其與特定的應用程序配合,從而改善常規散列表的性能。注意Java 1.2集合庫的散列映射(HashMap)具

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/

    54/5<12345>

    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備2023014753號-2
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>