CPU - pegando e calculando velocidade do processador |
Top Previous Next |
|
function GetCPUSpeed: string; const ID_BIT = $200000; // EFLAGS ID bit DelayTime = 500; var TimerHi, TimerLo : DWORD; PriorityClass, Priority: Integer; begin Result := '0'; try PriorityClass := GetPriorityClass(GetCurrentProcess); Priority := GetThreadPriority(GetCurrentThread); SetPriorityClass(GetCurrentProcess, REALTIME_PRIORITY_CLASS); SetThreadPriority(GetCurrentThread,THREAD_PRIORITY_TIME_CRITICAL);
Sleep(10); asm dw 310Fh // rdtsc mov TimerLo, eax mov TimerHi, edx end; Sleep(DelayTime); asm dw 310Fh // rdtsc sub eax, TimerLo sbb edx, TimerHi mov TimerLo, eax mov TimerHi, edx end;
SetThreadPriority(GetCurrentThread, Priority); SetPriorityClass(GetCurrentProcess, PriorityClass); Result := Format('%f MHz', [TimerLo / (1000.0 * DelayTime)]); except end; end; |