Советы по Delphi

       

CPU Speed routine


Пришло мне письмо от , где был вложен только код. К сожалению, авторство кода мне установить не удалось, хотя сам код потрясающий в своей простоте!

//
// Determinate CPU Freq
//
//

function GetCPUSpeed: Double;
const
DelayTime = 500;var
TimerHi : DWORD;TimerLo : DWORD;PriorityClass : Integer;Priority : Integer;begin
PriorityClass := GetPriorityClass(GetCurrentProcess);Priority := GetThreadPriority(GetCurrentThread);SetPriorityClass(GetCurrentProcess, REALTIME_PRIORITY_CLASS);SetThreadPriority(GetCurrentThread, THREAD_PRIORITY_TIME_CRITICAL);
Sleep(10);
asmDW 310Fh // rdtscMOV TimerLo, EAXMOV TimerHi, EDXend;
Sleep(DelayTime);
asmDW 310Fh // rdtscSUB EAX, TimerLoSBB EDX, TimerHiMOV TimerLo, EAXMOV TimerHi, EDXend;
SetThreadPriority(GetCurrentThread, Priority);SetPriorityClass(GetCurrentProcess, PriorityClass);
Result := TimerLo / (1000.0 * DelayTime);end;


// Usage ...

LabelCPUSpeed.Caption := Format('CPU speed: %f MHz', [GetCPUSpeed]);
[000381]



Содержание раздела