您可以使用计时器类来实现精度和避免不必要的调用。这个类可以使用 'QueryPerformanceCounter()' 来获取时间戳,并计算时间间隔。以下是一个简单的计时器类的示例代码:

class Timer
{
public:
    Timer()
    {
        QueryPerformanceFrequency(&m_frequency);
        Reset();
    }

    void Reset()
    {
        QueryPerformanceCounter(&m_startTime);
    }

    double GetElapsedSeconds()
    {
        LARGE_INTEGER endTime;
        QueryPerformanceCounter(&endTime);
        return static_cast<double>(endTime.QuadPart - m_startTime.QuadPart) / m_frequency.QuadPart;
    }

private:
    LARGE_INTEGER m_frequency;
    LARGE_INTEGER m_startTime;
};

使用这个计时器类,您可以像这样测量时间:

Timer timer;
// Do some work here
double seconds = timer.GetElapsedSeconds();

每次您需要测量时间时,只需创建一个计时器对象并调用 'Reset()' 方法即可开始计时。在需要测量时间的时间段结束时,只需调用 'GetElapsedSeconds()' 方法即可获取经过的时间。

C++ 高精度计时器:避免频繁调用 QueryPerformanceCounter()

原文地址: https://www.cveoy.top/t/topic/njzh 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录