码迷,mamicode.com
首页 > 其他好文 > 详细

高精度的计时方法

时间:2020-01-06 19:29:18      阅读:76      评论:0      收藏:0      [点我收藏+]

标签:counter   get   return   ref   res   com   query   queryperf   include   

API用法详见:https://docs.microsoft.com/zh-cn/windows/win32/api/profileapi/

下面为封装好的计时类:

#include <profileapi.h>

class CTimer
{
public:
    CTimer() : m_nElapsedTime(0)
    {
        QueryPerformanceFrequency(&m_nFrequency);
    }
    ~CTimer(){}
public:
    void Start()
    {
        QueryPerformanceCounter(&m_nBeginTime);
    }
    void Stop()
    {
        LARGE_INTEGER _nEndTime;
        QueryPerformanceCounter(&_nEndTime);
        m_nElapsedTime = (_nEndTime.QuadPart - m_nBeginTime.QuadPart) * 1000000 / m_nFrequency.QuadPart;
    }
    void Restart()
    {
        m_nElapsedTime= 0;
        QueryPerformanceCounter(&m_nBeginTime);
    }
    //微秒
    double GetTime_us()
    {
        return m_nElapsedTime;
    }
    //毫秒
    double GetTime_ms()
    {
        return m_nElapsedTime/ 1000.0;
    }
    //秒
    double GetTime_s()
    {
        return m_nElapsedTime/ 1000000.0;
    }

private:
    LARGE_INTEGER m_nFrequency;
    LARGE_INTEGER m_nBeginTime;
    double m_nElapsedTime;
};

高精度的计时方法

标签:counter   get   return   ref   res   com   query   queryperf   include   

原文地址:https://www.cnblogs.com/fr-ruiyang/p/12157755.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!