C/C++获取CPU的赫兹(GHZ)

来源:互联网 发布:对java面向对象的理解 编辑:程序博客网 时间:2024/05/11 04:44
语言:C/C++编程软件:VS2015字符集:UNICODE编码


【代码如下】


//获取CPU的赫兹BOOL GetCpuGHz(LPWSTR ghz, DWORD lenth){__int64 Time = 0;__int64 Start = 0;LARGE_INTEGER Freq;LARGE_INTEGER PerfStart;LARGE_INTEGER PerfNow;LARGE_INTEGER perfNow;int CurrentPriority = GetThreadPriority(GetCurrentThread());     if (THREAD_PRIORITY_ERROR_RETURN == CurrentPriority)return FALSE;if (!SetThreadPriority(GetCurrentThread(), THREAD_PRIORITY_HIGHEST))return FALSE;if (!QueryPerformanceFrequency(&Freq))return FALSE;if (Freq.QuadPart == 0)return FALSE;if (!QueryPerformanceCounter(&PerfStart))return FALSE;if (!QueryPerformanceCounter(&perfNow))return FALSE;if (PerfStart.QuadPart == 0 || perfNow.QuadPart == 0)return FALSE;Start = (((perfNow.QuadPart - PerfStart.QuadPart) * 1000) / Freq.QuadPart);unsigned __int64 CyclesOnstart = ReadTimeStampCounter();                   Sleep(1000);unsigned __int64 numberOfCycles = ReadTimeStampCounter() - CyclesOnstart;if (!QueryPerformanceCounter(&PerfNow))return FALSE;Time = (((PerfNow.QuadPart - PerfStart.QuadPart) * 1000000) / Freq.QuadPart) - Start; if (!SetThreadPriority(GetCurrentThread(), CurrentPriority))return FALSE;//获取GHZ赫兹值DWORD Ghz = (DWORD)numberOfCycles / (DWORD)Time;FLOAT fGhz = (FLOAT)Ghz / (FLOAT)1000;fGhz += 0.01; //一般0.00后面都有小数,省略它们,直接+=1即可.swprintf_s(ghz, lenth,_T("%.2f Ghz"), fGhz);return TRUE;}

【效果】


原创粉丝点击