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: