Wie ermittle ich die Taktfrequenz der CPU?


Diese Routine 'läuft' nur auf der Pentium-Klasse, aber dafür auf 1/100 MHz genau (Grundlagen: Interrupt List Release 52 von Ralf Brown):

function GetCPUSpeed: Double;
const TimeOfDelay = 500;
// Zeitraum für die Messung
 var TimerHigh, TimerLow: DWORD;
begin
//  Prozess und Thread auf Maximum Priorität setzen
  SetPriorityClass(GetCurrentProcess, REALTIME_PRIORITY_CLASS);
  SetThreadPriority(GetCurrentThread, THREAD_PRIORITY_TIME_CRITICAL);

  Sleep(10);

// Timer Werte auslesen
  asm
// Read From Time Stamp Counter
    dw 310Fh
    mov TimerLow, eax
    mov TimerHigh, edx
  end;

  Sleep(TimeOfDelay);

// Timer-Differenz ermitteln
  asm
// Read From Time Stamp Counter
    dw 310Fh
    sub eax, TimerLow
    sbb edx, TimerHigh
    mov TimerLow,  eax
    mov TimerHigh, edx
  end;

  Result := TimerLow / (1000.0 * TimeOfDelay);
end;
Delphi 1 Delphi 2 Delphi 3 Delphi 4
nicht getestet Version nicht betroffen getestet

siehe auch:


Delphi FAQ