Как определить тактовую частоту процессора?
function TForm1.getCPUSpeed: string;
const
DelayTime = 500;
var
TimerHi, TimerLo: dword;
PriorityClass, Priority: integer;
Speed: double;
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 );
Speed := TimerLo / ( 1000.0 * DelayTime );
Result := Format( '%f MHz', [Speed] );
end;
procedure TForm1.Button1Click(Sender: TObject);
begin ShowMessage( getCPUSpeed );
end; |