get the CPU
Speed
Author:
Sven Biork
3 Comments
to this tip [Write new comment]
[ Print tip
]
Tip Rating
(30):
Skill:
Useful:
Overall:
function
GetCPUSpeed: 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;
procedure
TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(Format('Your CPU speed: %f MHz',
[GetCPUSpeed]));
end;
{Note:
You should call the GetCPUSpeed function more
than
one time to get a good result. }
{Bemerkung:
Die GetCPUSpeed Funktion sollte mehrere Male
aufgerufen werden, um einen guten Mittelwert
zu erhalten.}