How to use QueryPerformanceCounter? (c++,不使用 .Net)
出處:https://stackoverflow.com/questions/1739259/how-to-use-queryperformancecounter
參考:https://docs.microsoft.com/zh-cn/windows/desktop/WmiSdk/accessing-performance-data-in-c--#example
#include <windows.h>double PCFreq = 0.0; __int64 CounterStart = 0;void StartCounter() {LARGE_INTEGER li;if(!QueryPerformanceFrequency(&li))cout << "QueryPerformanceFrequency failed!\n";PCFreq = double(li.QuadPart)/1000.0;QueryPerformanceCounter(&li);CounterStart = li.QuadPart; } double GetCounter() {LARGE_INTEGER li;QueryPerformanceCounter(&li);return double(li.QuadPart-CounterStart)/PCFreq; }int main() {StartCounter();Sleep(1000);cout << GetCounter() <<"\n";return 0; }This program should output a number close to 1000 (windows sleep isn't that accurate, but it should be like 999).
The StartCounter() function records the number of ticks the performance counter has in the CounterStart variable. The GetCounter() function returns the number of milliseconds since StartCounter() was last called as a double, so if GetCounter() returns 0.001 then it has been about 1 microsecond since StartCounter() was called.
If you want to have the timer use seconds instead then change
PCFreq = double(li.QuadPart)/1000.0;to
PCFreq = double(li.QuadPart);or if you want microseconds then use
PCFreq = double(li.QuadPart)/1000000.0;But really it's about convenience since it returns a double.
轉載于:https://www.cnblogs.com/liujx2019/p/10309810.html
總結
以上是生活随笔為你收集整理的How to use QueryPerformanceCounter? (c++,不使用 .Net)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SQL Server CLR 启用、部署
- 下一篇: IE11下用forms身份验证的问题