ndr-nkc.de ndr-nbc.de
  
Startseite
News
 
NDR-NKC
Geräte Z80
Geräte 68000
Geräte 8088
 
Z80 Section
Baugruppen
ROM's
Software
68000 Section
Baugruppen
ROM's
PASCAL/S
Software
8088 Section
Baugruppen
Downloads
 
Bussysteme
Stromversorgung
Input / Output
Grafikkarten
Speicherkarten
Massenspeicher
Weitere Baugruppen
 
Projekte
 
Dokumentation
Datenblätter
Glossar
Portraits
Links

Impressum

 

Geschwindigkeit des BASIC Interpreters für Z80

Das nachfolgend gezeigte Programm wird zur Vergleichsmessung verschiedener Computer aus den 80er Jahren verwendet.

Beispielprogramm

Als Beispiel habe ich zur Zeitmessung ein kleines Programm gewählt, welches fortlaufend neue Primzahlen berechnet und diese auf dem Bildschirm ausgibt. Umso größer die Zahlen werden desto länger dauert der Test für jede einzelne Primzahl. Die Ausführungszeit steigt schnell exponentiell an. Die nachfolgenden Messungen der Geschwindigkeit basieren jeweils auf exakt dem gleichen Programm - soweit dies mit dem betreffenden BASIC-Dialekt möglich ist.
10 PZ = 3
20 ANZ = 3
30 PZ = PZ + 2
40 DIV = 1
50 DIV = DIV + 2
60 IF DIV*DIV > PZ THEN GOTO 90
70 IF PZ/DIV = INT(PZ/DIV) THEN GOTO 30
80 GOTO 50
90 PRINT ANZ,PZ
100 ANZ = ANZ + 1
110 GOTO 30
Dieses Programm bietet nur einen Anhaltspunkt und testet bei Weitem nicht alle Instruktionen und Funktionen des BASIC Interpreters. Ausgaben auf dem Bildschirm erfolgen relativ selten, eventuelle Verzögerungen durch die Hardware beeinflussen das Ergebnis nur wenig.

Ergebnisse

Die Tabellen zeigen die Rechenzeit bis zum Erreichen einer vorgegebenen Anzahl an berechneten fortlaufenden Primzahlen an. Die letzte Spalte der Tabelle zeigt das Verhältnis der Geschwindigkeit der getesteten Computer untereinander an, wobei der NKC als Referenz dient - Werte kleiner als 100 % sind schneller.

NKC BASIC 1.3 für Z80

Soweit mir bekannt ist wird jeder einzelne Buchstabe des Programms als ASCII-Zeichen im RAM-Speicher des Computers abgelegt, Optimierungen finden anscheinend nicht statt. Da der Interpreter den Quelltext immer wieder neu interpretieren muss, können sich kleine Änderungen in der Umsetzung auf die Geschwindigkeit der Ausführung auswirken.

Berechnet bis Anzahl Primzahlen Berechnungsdauer Geschwindigkeit
100 26 3 sek 100 %
1000 168 52 sek 100 %
10000 1229 15 min 07 sek 100 %
100000 9592 5 std 20 min 35 sec 100 %

Sinclair ZX Spectrum 48k

Die verschiedenen Computer der Sinclair-Baureihe sind sehr speziell und auch nicht für ihre überragende Geschwindigkeit berühmt, eher für den seinerzeit sagenhaft günstigen Preis. Die Speicherung der BASIC Programme erfolgt nicht als reiner ASCII Text sondern in komprimierter Form. Die BASIC Schlüsselworte sind im Speicher als 1 Byte Tokens abgelegt. Programme auf dem ZX Spectrum sind also deutlich kleiner und sollten deshalb trotz der niedrigeren Taktfrequenz von 3,5 MHz schneller interpretiert werden können.

Berechnet bis Anzahl Primzahlen Berechnungsdauer Geschwindigkeit
100 26 3 sek 100 %
1000 168 1 min 6 sek 127 %
10000 1229 21 min 59 sek 145 %
100000 9592 8 std 20 min 28 sek 156 %

Fazit: Das ZX Spectrum Basic nutzt seine Möglichkeiten bei Weitem nicht aus. Dadurch dass die Performance mit dem Fortschritt der Berechnung deutlich absinkt ist anzunehmen, dass die Fließkomma-Berechnungen stärker ins Gewicht fallen und diese im ZX BASIC einfach schlecht programmiert sind.

Vergleichsprogramm

Nachfolgend das gleiche Programm mit der kürzest möglichen Umsetzung auf dem NKC. Obwohl die meiste Zeit des Programms mit der Ausführung der Multiplikationen und Divisionen verbraucht wird lässt sich trotzdem ein kleiner Vorteil bei der Geschwindigkeit feststellen.
10 PZ=3:ANZ=3
30 PZ=PZ+2:DIV=1
50 DIV=DIV+2:IFDIV*DIV>PZ GOTO90
60 IFPZ/DIV=INT(PZ/DIV)GOTO30
70 GOTO50
90 PRINTANZ,PZ:ANZ=ANZ+1:GOTO30
Berechnet bis Anzahl Primzahlen Berechnungsdauer Geschwindigkeit
100 26 3 sek 100 %
1000 168 49 sek 94 %
10000 1229 14 min 32 sek 96 %
100000 9592 5 std 07 min 40 sec 96 %