FAQ » Sprzęt

Jak pobrać częstotliwość taktowania procesora

  • 2006-02-15 15:29
  • 1 komentarz
  • 782 odsłony
  • Oceń ten tekst jako pierwszy
Oto procedura:

function CheckCPUSpeed(): integer;
const
  DelayTime = 500;
var
  TimerHi, TimerLo: DWORD;
  PriorityClass, Priority: integer;
begin
//Ustawienie priorytetu działania
PriorityClass := GetPriorityClass(GetCurrentProcess);
Priority := GetThreadPriority(GetCurrentThread);
SetPriorityClass(GetCurrentProcess, REALTIME_PRIORITY_CLASS);
SetThreadPriority(GetCurrentThread, THREAD_PRIORITY_TIME_CRITICAL);
 
//Dokonanie pomiaru
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;
 
//Przywrócenie priorytetu działania i zwrócenie wyniku
SetThreadPriority(GetCurrentThread, Priority);
SetPriorityClass(GetCurrentProcess, PriorityClass);
Result := integer(Round((TimerLo / (1000.0 * DelayTime))));
end;


Wykorzystanie:
ShowMessage(IntToStr(CheckCPUSpeed) + ' MHz');

1 komentarz

Verona 2009-10-24 16:05

Świetnie działa :)