quarta-feira, 30 de setembro de 2009

Como criar uma aplicação que mostre a velocidade da cpu

{Essa aplicação tem por objetivo exibir a velocidade da CPU.
Primeiro crie uma nova aplicação e insira um TButton e um TEdit. Crie a função GetCPUSpeed (ver código abaixo). Declare a constante ID_BIT na área de declarações da Unit.}

const
ID_BIT=$200000; // EFLAGS ID bit

function GetCPUSpeed: Double;
const
DelayTime = 500;
var
TimerHi, TimerLo: DWORD;
PriorityClass, Priority: Integer;
begin
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 := TimerLo / (1000.0 * DelayTime);
except end;
end;

//Agora faça a chamada à função no evento OnClick do botão.

procedure TForm1.Button1Click(Sender: TObject);
var
cpuspeed:string;
begin
cpuspeed:=Format('%f MHz', [GetCPUSpeed]);
Edit1.text := cpuspeed;
end;

//Execute a aplicação.

Nenhum comentário:

Postar um comentário