• <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-3-27 09:01 | 作者: 不詳 | 來源: 測試時代采編 | 查看: 38次 | 進入軟件測試論壇討論

    領測軟件測試網 要想真正有效地測試、優化程序性能——特別是為Windows服務器開發的多線程程序,操作系統提供的標準時鐘是不夠的,必須使用解析度更高的時鐘。本文介紹了如何訪問處理器的十億分之一秒級別的時鐘,極大地提高代碼性能測試的速度和精度。

        一、獲取計時數據

      和其他Windows服務器一樣,在Windows 2003 Server上最能發揮性能優勢的是多線程程序。Windows 2003 Server支持各種多處理器系統,同時也能在單處理器的P4系統上運行。對于單處理器P4系統,Windows 2003 Server將發揮出Intel超線程技術提供的各種硬件線程執行引擎的優勢。

      開發服務器應用的人都知道,之所以要開發并行程序,真正的原因只有一個——性能。然而,眾所周知,性能改善是一個比較模糊的目標,因為多線程代碼的性能通常只能靠經驗估計。在單線程程序中,性能改進程度一般可以精確地預知,例如減少了多少指令和延遲較高的操作,但多線程代碼不同,Windows平臺中線程調度是不確定的,也就是說,在Windows中應用程序可以要求調度程序運行線程,但調度程序何時(是否)運行線程則遠遠超出了應用程序代碼的控制范圍。

      在測試性能時,開發者很快會遇到一個問題,這就是Windows內建的標準時鐘實在不夠精確,其可靠測量事件時間的解析度很難高于一秒,這樣,要確定一個代碼片段是否真正得到優化就很困難了。如果一定要用Windows的標準時鐘進行測試,必須利用循環讓代碼運行幾百萬次,才能獲得有效的時間數據。絕大多數情況下,使用這類循環意味著修改應用程序。

      其實,還有更好的辦法,這就是Win32高解析度時鐘,涉及的函數有兩個:QueryPerformanceCount(),QueryPerformanceFrequency()。在Intel系統中,從P II開始,這些函數依賴于Pentium芯片內建的一個計數器。當一個Intel系統啟動時,一個64位的寄存器跟蹤著消逝的時鐘周期,這個計數器提供了解析度極高的計時設備。

      整個64位寄存器都要用到。32 bit的整數大約能計數20億,對于當前每秒運行20-30億個周期的處理器,32 bit的計數器會在一秒或更少的時間內溢出,64 bit的計數器則能容納這些秒數的20億倍,按20億秒計算就是約63年——可以相信,這已經遠遠超出測量任何程序的要求了。

      要對一個事件進行計時,只需獲得事件開始之前、結束之后的時鐘計數。下面的代碼不依賴于Win32(即,從C/C++直接訪問),稍后我們再看看操作系統提供的函數。我們首先定義一個數據結構,然后再來看填寫該結構的代碼:

    typedef struct _BinInt32 { __int32 i32[2];

     }

    BigInt32; typedef struct _BigInt64 { __int64 i64

    ;

    } BigInt64; typedef union _bigInt { BigInt32 int32val

    ;  

    BigInt64 int64val

    ;

    }

    BigInt

    ;

    延伸閱讀

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

    TAG: 代碼 精度 時鐘 性能測試


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(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>