VC中基于Windows 的精确定时_可以精确到微秒

来源:互联网 发布:轿子知乎 编辑:程序博客网 时间:2024/05/21 07:58

        QueryPerformanceCounter 可以取得开机以来64位的时间计数值
        QueryPerformanceFrequency 取得计算机每秒钟的计数值,和CPU速度有关
        windows在内部维护着一个高精度的计时器,这两个函数就和这个高精度的计时器有关。下面的这个函数简单说明了这两个函数的用法。

//warning C4035: 'RDTSC' : no return value#pragma warning(disable:4035) #include <Windows.h>#include <stdio.h>int main(int argc, char* argv[]){DWORD dwStart = GetTickCount();dwStart = dwStart/1000;printf("%d seconds have passed from power on\n",dwStart);LARGE_INTEGER dwFrequency;double dwFreq;    QueryPerformanceFrequency(&dwFrequency);dwFreq = (double)dwFrequency.QuadPart;//获得计数器的时钟频率LARGE_INTEGER dwCounter;double dwCount;QueryPerformanceCounter(&dwCounter);dwCount = (double)dwCounter.QuadPart;//获得开机以来计数器计算的个数dwCount = dwCount/dwFreq;printf("%f seconds have passed from power on\n",dwCount);    return 0;}

        GetTickCount()函数返回的是windows本次开机以来经过的ms数。这两个结果可以对比一下,可以看出是差不多的。
        参考:http://www.kumouse.com/?p=52 小杰的博客