Ich bin heute Abend auf die ("bekloppte") Idee gekommen, einfach mal auf dem MEGA65 (konkreter: aktueller xmega65-Emulator mit ROM 920376) paar Vergleichstests von BASIC 2 im C64-Modus und BASIC 65 zu machen. Natürlich in Hinblick auf Geschwindigkeit und nicht bezüglich Funktionsumfang des BASIC.
Da der Timer TI im BASIC 65 etwas anders als im BASIC 2 gehandhabt wird, habe ich eine kleine IF-Abfrage auf PEEK(44) eingebaut. Das ist im C64-Modus 8 und im BASIC 65 der Wert 0. Bei BASIC 2 muss am Ende TI noch durch 60 geteilt werden, um die Sekunden zu erhalten. In Zeile 20 wird jeweils in den 40 MHz-Modus geschaltet (auch beim BASIC 2).
Das Grundgerüst: Der Variablen A wird mittels zweier Schleifen (I und K) 10 x 32.000, also 320.000 Mal ein Wert zugewiesen und am Ende interessiert mich, wie lange das gedauert hat.
Test 1: Der Variablen A wird der Wert 1 zugewiesen.
BASIC 65:
BASIC 2:
Hier ist BASIC 2 11,7% schneller als BASIC 65.
Test 2: Der Variablen A wird der Wert 1+2 zugewiesen.
BASIC 65:
BASIC 2:
Hier ist BASIC 2 7,7% schneller als BASIC 65.
Test 3: Der Variablen A wird der Wert 1/2 zugewiesen.
BASIC 65:
BASIC 2:
Hier ist BASIC 2 24,1% langsamer als BASIC 65.
Test 4: Der Variablen A wird der Wert SIN(2.145) zugewiesen.
BASIC 65:
BASIC 2:
Hier ist BASIC 2 218,5% langsamer als BASIC 65.
Fazit:
Es gibt also durchaus BASIC-Programme (hier: Test 1 und Test 2 - Integerwerte für A), die im C64-Modus mit BASIC 2 schneller ablaufen als mit BASIC 65.
Bei der Gleitkommazahl (1/2) im Test 3 punktet dann BASIC 65 und bei der Berechnung des Sinus im Test 4 startet BASIC 65 dann durch.