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

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

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

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

    軟件的性能設計

    發布: 2009-9-01 11:39 | 作者: 不詳 | 來源: 領測軟件測試網 | 查看: 103次 | 進入軟件測試論壇討論

    領測軟件測試網

    /** 把輸入文本與特定的表達式進行匹配,如果匹配則返回匹配的文本,否則返回空字符 */

       public String match(String inputText);

      }

      BetterRegExpMatcher

      class BetterRegExpMatcher {

       public BetterRegExpMatcher(...);

       /** 向匹配子程序提供多種格式的輸入━━String、字符數組和字符數組的子集。如果不匹配則返回-1,如果匹配,則返回匹配開始處的偏移量 */

       public int match(String inputText);

       public int match(char[] inputText);


       public int match(char[] inputText, int offset, int length);

       /** 如果匹配,則返回匹配的長度,調用程序可以從返回的匹配開始處偏移量和長度重新構造匹配的文本 */

       public int getMatchLength();

       /** 如果調用程序需要,這個例程可以很方便地構造出匹配字符串 */

       public String getMatchText();

      }

      大量使用BadRegExpMatcher的程序要比使用BetterRegExpMatcher的程序運行速度慢一些。第一,調用程序必須創建String對象向match()傳遞參數,match()也必須創建一個String對象向調用程序返回匹配的文本。每次調用時都會創建二個對象,這聽起來也許沒有什么大問題,但如果頻繁地調用match(),創建這二個對象對性能產生的影響就大了。使用BadRegExpMatcher的程序的性能問題并不源于其編碼而源于其接口,象這樣設計的接口,臨時對象的創建是不可避免的。

      BetterRegExpMatcher用比較簡單的數據類型(整型、字符數組)取代了在match()中使用的String對象,從而無需在調用程序和match()之間通過中間對象傳遞數據。

      由于在設計階段比在完成整個程序后再進行修改能夠更好地避免程序性能方面的問題,因此應該在類的接口如何處理對象的創建這個問題上多花些時間。在RegExpMatcher中,其方法要求輸入和返回String對象就可能對性能有潛在的影響,因為String類的對象是不可變的,因此對String類對象參數進行處理就會要求在每次調用時創建一個新的String對象。

    延伸閱讀

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


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