c/c++ 高精度时间测试

  • 测量程序运行时间(ms级)

高精度时控函数QueryPerformanceFrequency(),QueryPerformanceCounter()

原理:QueryPerformanceCounter()这个函数返回高精确度性能计数器的值,它可以以微妙为单位计时.但是QueryPerformanceCounter()确切的精确计时的最小单位是与系统有关的,所以,必须要查询系统以得到QueryPerformanceCounter()返回的嘀哒声的频率.QueryPerformanceFrequency()提供了这个频率值,返回每秒嘀哒声的个数. 计算确切的时间是从第一次调用QueryPerformanceCounter()开始的假设得到的LARGE_INTEGER为nStartCounter,过一段时间后再次调用该函数结束的,设得到nStopCounter.两者之差除以QueryPerformanceFrequency()的频率就是开始到结束之间的秒数.由于计时函数本身要耗费很少的时间,要减去一个很少的时间开销.但一般都把这个开销忽略。

e.g:

#include 
#include 

/*count time*/
int main()
{

    double time=0;
    double counts=0;
    LARGE_INTEGER nFreq;
    LARGE_INTEGER nBeginTime;
    LARGE_INTEGER nEndTime;
    QueryPerformanceFrequency(&nFreq);
    QueryPerformanceCounter(&nBeginTime);//开始计时
        //...测试代码
         printf("Hello world!\n");
//          printf("Hello world!\n");
//           printf("Hello world!\n");
//            printf("Hello world!\n");
//            printf("Hello world!\n");
//            printf("Hello world!\n");
    QueryPerformanceCounter(&nEndTime);//停止计时
    time=(double)(nEndTime.QuadPart-nBeginTime.QuadPart)/(double)nFreq.QuadPart;//计算程序执行时间单位为s
    //cout<<"运行时间:"<

c/c++ 高精度时间测试_第1张图片

你可能感兴趣的:(c/c++)