Windows下測試代碼運行時間

1. 框架自帶方法

比如QT中QTime的靜態函數currentDate,獲取最小結果精度爲ms,精度取決於操作系統的API。比如該接口實現在Win下就是WINAPI GetLocalTime,精度仍然是ms級別的。

2. 操作系統API

其實很多,比如上面QT實現用到的GetLocalTime,WIn下的GetTickCount,以及這裏詳細說道的高精度時鐘QueryPerformanceFrequency/QueryPerformanceCounter,精度是微秒,這個就厲害了。我們進行代碼時間測量,和優化,一般會用這個接口。

使用方法:

        LARGE_INTEGER liFreq;
        QueryPerformanceFrequency(&liFreq);

        LARGE_INTEGER liStart, liEnd;
        QueryPerformanceCounter(&liStart);

        // 要測試運行時間的代碼片段
        // XXXX
       

        QueryPerformanceCounter(&liEnd);
        TRACE(__X("spend %f ms"), 1000.0 * (liEnd.QuadPart - liStart.QuadPart) / liFreq.QuadPart);

3 語言庫函數

C/C++等語言自帶的庫函數,比如localtime(QTime在linux下的實現依賴該C庫函數)。當然,庫函數可能是操作硬件實現,也有可能是利用API來實現的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章