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: