C++計時器

/Windows系統下可以用 time(),clock(),timeGetTime(),GetTickCount(),QueryPerformanceCounter()來對一段程序代碼進行計時
#include <stdio.h>
#include <windows.h>
#include <time.h>                   //time_t time()  clock_t clock()    
#include <Mmsystem.h>               //timeGetTime()    
#pragma comment(lib, "Winmm.lib")   //timeGetTime()   
//使用方法:將Sleep()函數換成需要測試運行時間的函數即可。
int main()
{   //用time()來計時,以秒爲單位
    time_t timeBegin, timeEnd;
    timeBegin = time(NULL);
    Sleep(1000);
    timeEnd = time(NULL);
    printf("%d\n", timeEnd - timeBegin);

    //用clock()來計時,以毫秒爲單位
    clock_t  clockBegin, clockEnd;
    clockBegin = clock();
    Sleep(800);
    clockEnd = clock();
    printf("%d\n", clockEnd - clockBegin);

    //用timeGetTime()來計時,以毫秒爲單位
    DWORD  dwBegin, dwEnd;
    dwBegin = timeGetTime();
    Sleep(800);
    dwEnd = timeGetTime();
    printf("%d\n", dwEnd - dwBegin);

    //用GetTickCount()來計時,以毫秒爲單位
    DWORD  dwGTCBegin, dwGTCEnd;
    dwGTCBegin = GetTickCount();
    Sleep(800);
    dwGTCEnd = GetTickCount();
    printf("%d\n", dwGTCEnd - dwGTCBegin);

    //用QueryPerformanceCounter()來計時,以微秒爲單位
    LARGE_INTEGER  large_interger;
    double dff;
    __int64  c1, c2;
    QueryPerformanceFrequency(&large_interger);
    dff = large_interger.QuadPart;
    QueryPerformanceCounter(&large_interger);
    c1 = large_interger.QuadPart;
    Sleep(800);
    QueryPerformanceCounter(&large_interger);
    c2 = large_interger.QuadPart;
    printf("本機高精度計時器頻率%lf\n", dff);
    printf("第一次計時器值%I64d\n第二次計時器值%I64d\n計時器差%I64d\n", c1, c2, c2 - c1);
    printf("計時%lf毫秒\n\n", (c2 - c1) * 1000 / dff);
    return 0;
}

發佈了147 篇原創文章 · 獲贊 84 · 訪問量 20萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章