C++实现微秒级计时器或程序运行时间查看

    技术2023-09-13  110

    C++实现计时的方法利用QueryPerformanceCounter和QueryPerformanceFrequency函数,其具有较高的时间精度可以实现微秒us级计时,而setTimeEvent只能实现ms级的计时。Sleep计时精度最差,误差一般在ms级别且不稳定。

    #pragma once #include <windows.h> class MyTimer { private: LONGLONG _freq; LARGE_INTEGER _begin; LARGE_INTEGER _end; public: long costTime; // 花费的时间(精确到微秒) public: MyTimer() { LARGE_INTEGER tmp; QueryPerformanceFrequency(&tmp); _freq=tmp.QuadPart; costTime=0; } void Start() // 开始计时 { QueryPerformanceCounter(&_begin); } void End() // 结束计时 { QueryPerformanceCounter(&_end); costTime=(long)((_end.QuadPart - _begin.QuadPart) * 1000000 / _freq); } void Reset() // 计时清0 { costTime = 0; } void Get1Point2ms() { QueryPerformanceCounter(&_begin); while(1) { QueryPerformanceCounter(&_end); costTime=(long)((_end.QuadPart - _begin.QuadPart) * 1000000 / _freq); if (costTime >= 2000) { break; } } } }; int main() { MyTimer mt; //注释代码可实现程序运行时间查看 /*mt.Start(); Sleep(100); mt.End(); */ //可得2ms到计时器 if (costTime >= 2000) mt.Get1Point2ms(); std::cout<<"所用时间为 " << mt.costTime << "us"<<std::endl; system("pause"); return 0; }
    Processed: 0.014, SQL: 9