C++精确计时

#include <windows.h>

LARGE_INTEGER m_freq,m_timeStart,m_timeNow;

QueryPerformanceFrequency(&m_freq);
QueryPerformanceCounter(&m_timeStart);
//double time = (double)m_timeStart.QuadPart / m_freq.QuadPart;
//ui.elapsedTimeLabel->setText(QString::number(time));
Sleep(1000);
QueryPerformanceCounter(&m_timeNow);
double elapsedTime = (double)(m_timeNow.QuadPart - m_timeStart.QuadPart) / m_freq.QuadPart;
ui.elapsedTimeLabel->setText(QString::number(elapsedTime));

LARGE_INTEGER为64位整型数,结构如下
typedef union _LARGE_INTEGER
{
       struct
       {
          DWORD LowPart ;// 4字节整型数
          LONG  HighPart;// 4字节整型数
        };
        LONGLONG QuadPart ;// 8字节整型数
}LARGE_INTEGER ;
QueryPerformanceCounter()返回高精度计数器的值,精确到微秒;
QueryPerformanceFrequency()计数频率,每秒滴答次数;
ElapsedTime=(nStopCounter.QuadPart-nStartCounter.QuadPart)/frequency.QuadPart  //计算运行时间(秒)
posted @ 2017-07-11 15:51  三味线、  阅读(531)  评论(0编辑  收藏  举报