The source program is as follows:
// compile: CL / TC
#define win32_Lean_and_mean # include
#include
#define rdst _asm _emit 0x0f _ASM _EMIT 0X31
float GetCpuSpeed () {__int64 cStart = 0, cEnd = 0; unsigned __int64 nCtr = 0, nCtrStop = 0, nFrq = 0; QueryPerformanceFrequency ((LARGE_INTEGER *) & nFrq); QueryPerformanceCounter ((LARGE_INTEGER *) & nCtrStop); nCtrStop = nFrq ; _ASM {RDST MOV DWORD PTR CSTART, EAX MOV DWORD PTR [CStart 4], EDX} DO {QueryperFormanceCounter (Large_integer *) & nctr);} While (NCTR _asm { RDST Mov DWORD PTR CEND, EAX MOV DWORD PTR [CEND 4], EDX } Return (Float) CStart / 1000000; } INT main () {Printf ("CPU Speed:% 5.3F MHz / N", getcpuspeed ()); return 0;}