Geschwindigkeit in DOS messen

Während man bei älteren Computern froh war, daß komplizierte Aufgaben überhaupt und wenn möglich noch in einer akzeptablen Zeit bewältigt wurden, zählt für neuere PCs in erster Linie die Geschwindigkeit: Je schneller desto besser, denn können kann so ein »Ding« ja sowieso schon (fast) alles. SPEED.DEB ermittelt über einen Zähler die Anzahl der Durchläufe einer einfachen Schleife, die die CPU während eines Timer-Ticks schafft und liefert das Ergebnis im Errorlevel. Ein 4,77-MHz-XT bringt es übrigens auf 5 Durchläufe, ein 386er mit 25-MHz-Cache schafft 64! Bei höheren Taktfrequenzen, vor allem bei den CPUs 80286 und 80386, weicht das Ergebnis mehr oder weniger stark von der tatsächlichen Taktfrequenz ab. Als grobe Referenz ist SPEED jedoch sehr wirkungsvoll. So können Sie z. B. in einem Netzwerk die Ausführung eines rechenintensiven Programms auf zu langsamen Workstations verbieten. Probieren Sie bei Bedarf mal den folgenden Stapeljob aus, der den Aufruf des Turbo-Debuggers verhindert, falls ein PC zu langsam ist:

@ECHO OFF
SPEED
IF ERRORLEVEL 10 GOTO SCHNELL
ECHO Das Gerät ist für TD zu langsam!
GOTO ENDE
:SCHNELL
TD %1 %2 %3
:ENDE
Name: SPEED.DEB
Funktion: Ermittelt einen Index für die PC-Geschwindigkeit.
Übersetzung: DEBUG <SPEED.DEB
Prüfsumme: 2220
Anwendung: SPEEDIF ERRORLEVEL #

# = Geschwindikgeitsfaktor

Einschränkungen: Je schneller der PC, desto mehr weicht das Ergebnis von der tatsächlichen Rechengeschwindigkeit ab.
A
POP DS              ;100
MOV AL,FE           ;101
OUT 21,AL           ;103
HLT                 ;105
MOV BL,[46C]        ;106
MOV CX,3F4          ;10A
CMP BL,[46C]        ;10D
JNZ 11C             ;111
LOOP 10D            ;113
CS:INC By[121]      ;115
JNZ 10A             ;11A
MOV AL,0            ;11C
OUT 21,AL           ;11E
MOV AX,4C00         ;120
INT 21              ;123

RCX
25
NSPEED.COM
W
Q

Quelle: 200 Utilities für PC-/MS-DOS von Gerhard Schild und Thomas Jannot