如何精准的获得时钟频率计算耗时——QueryPerformanceFrequency

ⅰ亾dé卋堺 提交于 2019-12-22 12:02:05

时间处理

在处理一些获得时间的问题时,可以用clock()函数简单的获得时钟,但是进度往往是不够的,这个时候可以用 QueryPerformanceFrequency(&frequency)获得更精确的时钟

1.clock(),字面精度1ms,实际精度是操作系统的时间片,windows下单核10ms,双核15ms
2.QueryPerformenceCounter,字面精度100ns(0.1us),实际精度100us左右
对于毫秒级 用2个都可以,对于us级建议用QueryPerformenceCounter
下面介绍QueryPerformenceCounter的快速用法:

#include <iostream>
#include <windows.h>
using namespace std;
LARGE_INTEGER frequency;
void function()
{
    cout<<"cost time=";
}
int main()
{
    double dff,begin_,_end,time;
    QueryPerformanceFrequency(&frequency);//获得时钟频率
    dff=(double)frequency.QuadPart;//取得频率*/
    QueryPerformanceCounter(&frequency);
    begin_=frequency.QuadPart;//获得初始值
    function();
    QueryPerformanceCounter(&frequency);
    _end=frequency.QuadPart;//获得终止值
    time=(_end-begin_)/dff;//差值除以频率得到时间
    cout<<time<<"s"<<endl;
}

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!