Here is just small piece of assembler code to determine CPU frequency in MHz.
function CPUSpeed: Double; const DelayTime = 500; var TimerHi, TimerLo: DWORD; PriorityClass, Priority : Integer; begin PriorityClass:=GetPriorityClass(GetCurrentProcess); Priority:=GetThreadPriority(GetCurrentThread); SetPriorityClass(GetCurrentProcess, REALTIME_PRIORITY_CLASS); SetThreadPriority(GetCurrentThread, THREAD_PRIORITY_TIME_CRITICAL); Sleep(10); asm dw 310Fh mov TimerLo, eax mov TimerHi, edx end; Sleep(DelayTime); asm dw 310Fh sub eax, TimerLo sbb edx, TimerHi mov TimerLo, eax mov TimerHi, edx end; SetThreadPriority(GetCurrentThread, Priority); SetPriorityClass(GetCurrentProcess, PriorityClass); Result := TimerLo / (1000 * DelayTime); end;
NOTE: NOT TESTED ON MULTICORE PROCESSORS
Δεν υπάρχουν σχόλια:
Δημοσίευση σχολίου