Κυριακή, 29 Μαρτίου 2020

The speed of BASIC: η παράξενη περίπτωση του Commodore 128 και η τελική κατάταξη (μέρος 5ο)

Να 'μαστε και πάλι με το τελευταίο μέρος του θέματος για την ταχύτητα της γλώσσας BASIC στα δημοφιλέστερα 8/16bit μηχανήματα (τα προηγούμενα μέρη μπορεί να τα βρείτε εδώ: 1ο, 2ο, 3ο και 4ο).

Τα όσα θα διαβάσετε στη συνέχεια δεν πρόκειται σε καμία περίπτωση να αλλάξουν ριζικά ό,τι αποκομίσατε από την ανάγνωση των προηγούμενων μερών και, για να λέμε και την αλήθεια, έχουν περισσότερο εγκυκλοπαιδική σημασία παρά ουσιαστική. Θα ασχοληθούμε λοιπόν κάπως εκτενέστερα με την περίπτωση του Commodore 128, ενός υπολογιστή που είχε πάμπολλες ιδιαιτερότητες, μία εκ των οποίων θα μας απασχολήσει και στη συνέχεια.

Αν θυμάστε τα αποτελέσματα των benchmarks στα 3 πρώτα μέρη, ο Commodore 128, αν και εφοδιασμένος ουσιαστικά με τον ίδιο επεξεργαστή με τα υπόλοιπα 8bit μοντέλα της Commodore, ήταν ο πιο αργός μεταξύ των ομόσταυλών του. Προφανώς έπαιζε ρόλο η πολυπλοκότητα (;) της Commodore BASIC 7.0, αλλά τι συνέβαινε με την ταχύτητα του 8502; Αυτή δεν γινόταν πουθενά αντιληπτή;


Ο Commodore 128 διέθετε 2 chip γραφικών: το VIC-II, το ίδιο δηλαδή με αυτό του Commodore 64 για συμβατότητα με τον πρόγονό του, αλλά και το VDC, που του παρείχε 80στηλο text mode και γραφικά υψηλής ανάλυσης. Όταν ο 128άρης λειτουργούσε σε C64 mode τότε επιστρατευόταν το VIC-II, το οποίο λειτουργούσε στο 1MHz όπως και ο 8502. Θα περίμενε κανείς όταν λειτουργούσε σε C128 mode λοιπόν να επιστρατεύεται το VDC, έτσι δεν είναι; Ε, και ναι, και όχι. Βλέπετε, το VDC είχε άλλη έξοδο από το VIC-II - μιλάμε για chips στον ίδιο υπολογιστή, μην ξεχνιόμαστε - οπότε, για να μπορούν να χρησιμοποιούσουν το μηχάνημα όσοι δεν διέθεταν RGB monitor, όταν ο 128άρης "έπαιζε" σε 40στηλο mode απεικόνισης χρησιμοποιούσε το VIC-II. Έλα όμως που το τελευταίο δεν είχε τη δυνατότητα να λειτουργήσει στα 2MHz! Το αποτέλεσμα των αλλοπρόσαλλων αυτών επιλογών ήταν το εξής: όταν ο υπολογιστής λειτουργούσε σαν Commodore 128 αλλά με composite monitor ή τηλεόραση να απεικονίζει 40 στήλες κειμένου και ο επεξεργαστής του να τρέχει στο 1MHz και όταν κάποιος χρησιμοποιούσε RGB οθόνη με 80στηλη απεικόνιση ο επεξεργαστής (και το VDC) να τρέχει στα 2MHz! Αλλά - και εδώ είναι το καλύτερο - υπήρχε η δυνατότητα, ακόμα και στο 40στηλο να "γυρίσουμε" τον επεξεργαστή στα 2MHz. Πώς; Μα, απλούστατα, χρησιμοποιώντας τις εντολές FAST και SLOW και κόβοντας την απεικόνιση στην οθόνη, ακριβώς όπως συνέβαινε δηλαδή και με τον ZX81 μερικά χρόνια νωρίτερα! Και, αν με τον ZX81 αυτό μπορούσε να γίνει εν μέρει αποδεκτό λόγω της πολύ χαμηλής τιμής του και της εποχής που κυκλοφόρησε, τι μπορεί κανείς να πει για τον Commodore 128; Αστεία και απαράδεκτα πράγματα θα έλεγα αν με ρωτούσατε για ένα μηχάνημα που ούτε φτηνό ήταν και αποτελούσε και τον διάδοχο του πλέον επιτυχημένου home computer παγκοσμίως...

Με όλα τα παραπάνω ως δεδομένα, θα επαναλάβουμε λοιπόν τα benchmarks 1-8 σε FAST mode λειτουργίας, κλείνοντας την απεικόνιση στην οθόνη μέχρι την ολοκλήρωση των υπολογισμών. Τα αποτελέσματα, όπως μπορείτε να διαπιστώσετε, διαφοροποιούνται αρκετά:

Benchmark #1

Commodore 128 (8502/2MHz) --> 1,2 sec
Commodore 128 (8502/1MHz) --> 2,2 sec


Benchmark #2

Commodore 128 (8502/2MHz) --> 5,7 sec
Commodore 128 (8502/1MHz) --> 11,7 sec


Benchmark #3

Commodore 128 (8502/2MHz) --> 10,7 sec
Commodore 128 (8502/1MHz) --> 22,2 sec


Benchmark #4

Commodore 128 (8502/2MHz) --> 11,2 sec
Commodore 128 (8502/1MHz) --> 23,7 sec


Benchmark #5

Commodore 128 (8502/2MHz) --> 12,5 sec
Commodore 128 (8502/1MHz) --> 26,4 sec


Benchmark #6

Commodore 128 (8502/2MHz) --> 20 sec
Commodore 128 (8502/1MHz) --> 42,75 sec


Benchmark #7

Commodore 128 (8502/2MHz) --> 32,50 sec
Commodore 128 (8502/1MHz) --> 68 sec


Benchmark #8

Commodore 128 (8502/2MHz) --> 61 sec
Commodore 128 (8502/1MHz) --> 128,5 sec



Βλέπουμε από τα παραπάνω ότι στα 2MHz ο υπολογιστής λειτουργεί στην διπλάσια ταχύτητα (ποιος θα το περίμενε;) και κάνει πάνω-κάτω τον μισό χρόνο σε όλες τις δοκιμές. Τον κατατάσσει όμως αυτό στην κορυφή των 8μπιτων; Όχι, όπως θα δούμε αν συγκρίνουμε τους χρόνους του με αυτούς των Acorn BBC model B & Electron και Amstrad CPC 464:


Benchmark #1

Acorn BBC Micro model B (6502/2MHz) --> 0,8 sec
Acorn Electron (6502/2MHz) --> 1,11 sec
Amstrad CPC 464 (Z80A/4MHz) --> 1,13 sec
Commodore 128 (8502/2MHz) --> 1,2 sec
Commodore 128 (8502/1MHz) --> 2,2 sec


Benchmark #2

Acorn BBC Micro model B (6502/2MHz) --> 3,1 sec
Amstrad CPC 464 (Z80A/4MHz) --> 3,4 sec
Acorn Electron (6502/2MHz) --> 4,01 sec
Commodore 128 (8502/2MHz) --> 5,7 sec
Commodore 128 (8502/1MHz) --> 11,7 sec


Benchmark #3

Acorn BBC Micro model B (6502/2MHz) --> 8,1 sec
Amstrad CPC 464 (Z80A/4MHz) --> 9,4 sec  
Commodore 128 (8502/2MHz) --> 10,7 sec
Acorn Electron (6502/2MHz) --> 11,12 sec 
Commodore 128 (8502/1MHz) --> 22,2 sec


Benchmark #4

Acorn BBC Micro model B (6502/2MHz) --> 8,7 sec
Amstrad CPC 464 (Z80A/4MHz) --> 9,8 sec
Commodore 128 (8502/2MHz) --> 11,2 sec
Acorn Electron (6502/2MHz) --> 11,76 sec
Commodore 128 (8502/1MHz) --> 23,7 sec


Benchmark #5

Acorn BBC Micro model B (6502/2MHz) --> 9,0 sec
Amstrad CPC 464 (Z80A/4MHz) --> 10,39 sec
Acorn Electron (6502/2MHz) --> 12,4 sec
Commodore 128 (8502/2MHz) --> 12,5 sec
Commodore 128 (8502/1MHz) --> 26,4 sec 


Benchmark #6

Acorn BBC Micro model B (6502/2MHz) --> 13,9 sec
Acorn Electron (6502/2MHz) --> 18,72 sec
Amstrad CPC 464 (Z80A/4MHz) --> 19,33 sec 
Commodore 128 (8502/2MHz) --> 20 sec
Commodore 128 (8502/1MHz) --> 42,75 sec


Benchmark #7

Acorn BBC Micro model B (6502/2MHz) --> 21,2 sec
Acorn Electron (6502/2MHz) --> 28,71 sec
Amstrad CPC 464 (Z80A/4MHz) --> 30,81 sec 
Commodore 128 (8502/2MHz) --> 32,50 sec
Commodore 128 (8502/1MHz) --> 68 sec  


Benchmark #8

Amstrad CPC 464 (Z80A/4MHz) --> 34,48 sec 
Acorn BBC Micro model B (6502/2MHz) --> 49,9 sec
Commodore 128 (8502/2MHz) --> 61 sec
Acorn Electron (6502/2MHz) --> 72,53 sec
Commodore 128 (8502/1MHz) --> 128,5 sec 


Όσοι περίμεναν θριάμβους, προφανώς θα απογοητεύτηκαν: ο Commodore 128 μόλις 3 στις 8 φορές κατόρθωσε να "χωθεί" μέσα στην πρώτη τριάδα των 8μπιτων, και αυτό στην 3η θέση και χωρίς απεικόνιση στον οθόνη! Δεν το λες και μεγαλειώδες όπως και να το κάνουμε...


Στο σημείο αυτό, και μετά την - απολύτως λογική - παραίνεση του φίλου μου Δημήτρη Φ. (dimfil) δοκιμάσαμε και κάποιες πιο εξελιγμένες διαλέκτους της BASIC στους Atari XL και Commodore 64, ήτοι τις Turbo BASIC XL και Simon's BASIC. Όπως θα δούμε στη συνέχεια, η Turbo BASIC XL λίγο-πολύ επιβεβαιώνει το πρώτο συνθετικό της ονομασίας της, ενώ, από την άλλη, η Simon's BASIC, η οποία ποτέ δεν διαφήμισε την ταχύτητά της, αποδείχτηκε ότι... καλώς έπραξε! Για να δούμε τι αποτελέσματα μας έδωσαν λοιπόν οι δύο εξ' Αμερικής 8μπιτοι:


Benchmark #1

Atari 800XL (6502/2MHz) (Turbo BASIC XL) --> 0,85 sec
Commodore 64 (6510/1MHz) --> 1,2 sec
Commodore 64 (6510/1MHz) (Simon's BASIC) --> 1,5 sec
Atari 800XL (6502/2MHz) --> 2,2 sec


Benchmark #2

Atari 800XL (6502/2MHz) (Turbo BASIC XL) --> 3,27 sec
Atari 800XL (6502/2MHz) --> 7,3 sec
Commodore 64 (6510/1MHz) --> 9,3 sec
Commodore 64 (6510/1MHz) (Simon's BASIC) --> 10,5 sec


Benchmark #3

Atari 800XL (6502/2MHz) (Turbo BASIC XL) --> 7,94 sec
Commodore 64 (6510/1MHz) --> 17,6 sec
Commodore 64 (6510/1MHz) (Simon's BASIC) --> 19,5 sec
Atari 800XL (6502/2MHz) --> 19,7 sec


Benchmark #4

Atari 800XL (6502/2MHz) (Turbo BASIC XL) --> 8,74 sec
Commodore 64 (6510/1MHz) --> 18,8 sec
Commodore 64 (6510/1MHz) (Simon's BASIC) --> 21 sec
Atari 800XL (6502/2MHz) --> 24,1 sec


Benchmark #5

Atari 800XL (6502/2MHz) (Turbo BASIC XL) --> 9,58 sec
Commodore 64 (6510/1MHz) --> 21 sec
Commodore 64 (6510/1MHz) (Simon's BASIC) --> 22,3 sec
Atari 800XL (6502/2MHz) --> 26,3 sec


Benchmark #6

Atari 800XL (6502/2MHz) (Turbo BASIC XL) --> 14,74 sec
Commodore 64 (6510/1MHz) --> 29,5 sec
Commodore 64 (6510/1MHz) (Simon's BASIC) --> 34 sec
Atari 800XL (6502/2MHz) --> 40,3 sec


Benchmark #7

Atari 800XL (6502/2MHz) (Turbo BASIC XL) --> 24,71 sec
Commodore 64 (6510/1MHz) (Simon's BASIC) --> 54 sec
Commodore 64 (6510/1MHz) --> 55,4 sec
Atari 800XL (6502/2MHz) --> 60,1 sec

Benchmark #8

Atari 800XL (6502/2MHz) (Turbo BASIC XL) --> 56,53 sec
Commodore 64 (6510/1MHz) (Simon's BASIC) --> 118 sec
Commodore 64 (6510/1MHz) --> 119,3 sec
Atari 800XL (6502/2MHz) --> - sec



Μάλιστα. Αφού λοιπόν διαπιστώσαμε ότι με την κατάλληλη γλώσσα οι 8μπιτοι Atari είναι, speed-wise, άλλα μηχανήματα, και πριν πάμε στην συνολική κατάταξη, θα εξετάσουμε και μια νέα, ολόφρεσκια προσθήκη: αναφέρομαι στον ZX Spectrum Next, ο οποίος θα μας δείξει πόσα απίδια πιάνει ένας Z80A (σε FPGA) στα 28MHz απέναντι στον παλιό, καλό ZX Spectrum.

Benchmark #1

ZX Spectrum Next (Z80A/28MHz) (Next BASIC) --> 0,8 sec
ZX Spectrum (Z80A/3,5MHz) --> 4,4 sec


Benchmark #2

ZX Spectrum Next (Z80A/28MHz) (Next BASIC) --> 1,45 sec
ZX Spectrum (Z80A/3,5MHz) --> 8,2 sec


Benchmark #3

ZX Spectrum Next (Z80A/28MHz) (Next BASIC) --> 3,2 sec
ZX Spectrum (Z80A/3,5MHz) --> 20 sec


Benchmark #4

ZX Spectrum Next (Z80A/28MHz) (Next BASIC) --> 3,1 sec
ZX Spectrum (Z80A/3,5MHz) --> 19,2 sec


Benchmark #5

ZX Spectrum Next (Z80A/28MHz) (Next BASIC) --> 3,55 sec
ZX Spectrum (Z80A/3,5MHz) --> 23,1 sec


Benchmark #6

ZX Spectrum Next (Z80A/28MHz) (Next BASIC) --> 8,45 sec
ZX Spectrum (Z80A/3,5MHz) --> 53,4 sec


Benchmark #7

ZX Spectrum Next (Z80A/28MHz) (Next BASIC) --> 12,32 sec
ZX Spectrum (Z80A/3,5MHz) --> 77,6 sec


Benchmark #8

ZX Spectrum Next (Z80A/28MHz) (Next BASIC) --> 36,8 sec
ZX Spectrum (Z80A/3,5MHz) --> 239 sec


Όπως αναμενόταν, ο ZX Spectrum Next, παρά το γεγονός ότι η Next BASIC είναι υπερσύνολο της Sinclair BASIC που βασίζεται στην τελευταία (με ό,τι κακό αυτό συνεπάγεται από άποψη ταχύτητας) είναι κατά πολύ πιο σβέλτος από τον original 48άρη Spectrum και, συνολικά, όπως θα δούμε και στη συνέχεια, βρίσκεται στην κορυφή των 8μπιτων, χωρίς όμως να μπορεί να πλησιάσει τις κορυφαίες επιδόσεις των 16μπιτων με πολύ πιο χαμηλά χρονισμένους επεξεργαστές...


Τώρα λοιπόν που έχουμε ολοκληρωμένη εικόνα από όλα τα μηχανήματα, θα σας αραδιάσω όλα τα αποτελέσματα με οτιδήποτε  ήταν δυνατόν να δοκιμαστεί συν μερικά μηχανήματα-έκπληξη, των οποίων τα αποτελέσματα συνέλεξα από το internet. Πάρτε βαθειά ανάσα και πάμε λοιπόν!

Benchmark #1

PC (Celeron/2400MHz) (QBASIC) --> 0,007 sec
Acorn Archimedes A3010 (ARM250/12MHz) --> 0,04 sec
Amiga (68000/7,14MHz) (AMOS) --> 0,40 sec
ZX Spectrum Next (Z80A/28MHz) (Next BASIC) --> 0,8 sec
Atari ST (68000/8MHz) (STOS) --> 0,40 sec
Acorn Atom (6502/1MHz) --> 0,5 sec
Amiga (68000/7,14MHz) (ABasic) --> 0,60 sec
Acorn BBC micro model B (6502/2MHz) --> 0,85 sec
Atari 800XL (6502/2MHz) (Turbo BASIC XL) --> 0,85 sec 
Atari ST (68000/8MHz) (Atari BASIC) --> 1,10 sec
Acorn Electron (6502/2MHz) --> 1,11 sec
Amstrad CPC 464 (Z80A/4MHz) --> 1,13 sec
Commodore VIC-20 (6502/1MHz) --> 1,2 sec
Commodore 64 (6510/1MHz) --> 1,2 sec
Commodore 128 (8502/2MHz) --> 1,2 sec
Apple II (6502/1,022MHz) --> 1,3 sec
IBM PC (8088/4,77MHz) --> 1,5 sec
Commodore 64 (6510/1MHz) (Simon's BASIC) --> 1,5 sec 
Dragon 32 (6809/0,89MHz) --> 1,6 sec
Oric Atmos (6502/1MHz) --> 1,6 sec
Spectravideo SVI-328 (Z80A/3,6MHz) --> 1,6 sec
Oric-1 (6502/1MHz) --> 1,8 sec
Commodore Plus/4 (8501/1,76MHz) --> 1,9 sec
Commodore 128 (8502/1MHz) --> 2,2 sec
Atari 800XL (6502/2MHz) --> 2,2 sec
Texas Instruments TI-99/4A (TMS9900/3MHz) --> 2,9 sec
Sinclair ZX Spectrum (Z80A/3,5MHz) --> 4,4 sec
Sinclair ZX81 (Z80A/3,5MHz) (Fast mode) --> 4,5 sec


Benchmark #2

PC (Celeron/2400MHz) (QBASIC) --> 0,011 sec
Acorn Archimedes A3010 (ARM250/12MHz) --> 0,15 sec
Atari ST (68000/8MHz) (STOS) --> 0,80 sec 
Amiga (68000/7,14MHz) (AMOS) --> 0,95 sec
ZX Spectrum Next (Z80A/28MHz) (Next BASIC) --> 1,45 sec
Amiga (68000/7,14MHz) (ABasic) --> 2,10 sec
Acorn BBC micro model B (6502/2MHz) --> 3,1 sec
Atari ST (68000/8MHz) (Atari BASIC) --> 3,2 sec
Atari 800XL (6502/2MHz) (Turbo BASIC XL) --> 3,27 sec 
Amstrad CPC 464 (Z80A/4MHz) --> 3,4 sec 
Acorn Electron (6502/2MHz) --> 4,01 sec
Acorn Atom (6502/1MHz) --> 5,1 sec 
IBM PC (8088/4,77MHz) --> 5,2 sec 
Spectravideo SVI-328 (Z80A/3,6MHz) --> 5,4 sec
Commodore 128 (8502/2MHz) --> 5,7 sec
Sinclair ZX81 (Z80A/3,5MHz) (Fast mode) --> 6,9 sec
Atari 800XL (6502/2MHz) --> 7,2 sec
Commodore VIC-20 (6502/1MHz) --> 8,3 sec
Apple II (6502/1,022MHz) --> 8,5 sec 
Sinclair ZX Spectrum (Z80A/3,5MHz) --> 8,7 sec
Texas Instruments TI-99/4A (TMS9900/3MHz) --> 8,8 sec
Commodore 64 (6510/1MHz) --> 9,3 sec
Commodore Plus/4 (8501/1,76MHz) --> 9,3 sec
Dragon 32 (6809/0,89MHz) --> 10,2 sec
Commodore 64 (6510/1MHz) (Simon's BASIC) --> 10,5 sec
Commodore 128 (8502/1MHz) --> 11,7 sec
Oric Atmos (6502/1MHz) --> 15,2 sec
Oric-1 (6502/1MHz) --> 17,1 sec


Benchmark #3

PC (Celeron/2400MHz) (QBASIC) --> 0,024 sec
Acorn Archimedes A3010 (ARM250/12MHz) --> 0,37 sec
Amiga (68000/7,14MHz) (AMOS) --> 1,2 sec
Atari ST (68000/8MHz) (STOS) --> 1,45 sec  
ZX Spectrum Next (Z80A/28MHz) (Next BASIC) --> 3,2 sec
Amiga (68000/7,14MHz) (ABasic) --> 4,1 sec
Atari ST (68000/8MHz) (Atari BASIC) --> 6,1 sec
Atari 800XL (6502/2MHz) (Turbo BASIC XL) --> 7,94 sec 
Acorn BBC micro model B (6502/2MHz) --> 8,1 sec
Amstrad CPC 464 (Z80A/4MHz) --> 9,2 sec 
Acorn Atom (6502/1MHz) --> 9,5 sec  
Commodore 128 (8502/2MHz) --> 10,7 sec 
Acorn Electron (6502/2MHz) --> 11,12 sec
IBM PC (8088/4,77MHz) --> 12,1 sec 
Commodore VIC-20 (6502/1MHz) --> 15,5 sec
Apple II (6502/1,022MHz) --> 16 sec  
Sinclair ZX81 (Z80A/3,5MHz) (Fast mode) --> 16,4 sec
Commodore 64 (6510/1MHz) --> 17,6 sec
Spectravideo SVI-328 (Z80A/3,6MHz) --> 17,9 sec 
Commodore Plus/4 (8501/1,76MHz) --> 18,1 sec 
Atari 800XL (6502/2MHz) --> 19,1 sec
Commodore 64 (6510/1MHz) (Simon's BASIC) --> 19,5 sec 
Dragon 32 (6809/0,89MHz) --> 19,7 sec
Sinclair ZX Spectrum (Z80A/3,5MHz) --> 21,1 sec
Commodore 128 (8502/1MHz) --> 22,2 sec 
Texas Instruments TI-99/4A (TMS9900/3MHz) --> 22,8 sec 
Oric Atmos (6502/1MHz) --> 25,4 sec
Oric-1 (6502/1MHz) --> 29 sec


Benchmark #4

PC (Celeron/2400MHz) (QBASIC) --> 0,024 sec
Acorn Archimedes A3010 (ARM250/12MHz) --> 0,33 sec
Amiga (68000/7,14MHz) (AMOS) --> 1,25 sec
Atari ST (68000/8MHz) (STOS) --> 1,35 sec  
ZX Spectrum Next (Z80A/28MHz) (Next BASIC) --> 3,1 sec
Amiga (68000/7,14MHz) (ABasic) --> 5,1 sec
Atari ST (68000/8MHz) (Atari BASIC) --> 6,8 sec
Acorn BBC micro model B (6502/2MHz) --> 8,7 sec
Atari 800XL (6502/2MHz) (Turbo BASIC XL) --> 8,74 sec 
Amstrad CPC 464 (Z80A/4MHz) --> 9,7 sec 
Acorn Atom (6502/1MHz) --> 10,8 sec  
Commodore 128 (8502/2MHz) --> 11,2 sec 
Acorn Electron (6502/2MHz) --> 11,76 sec
IBM PC (8088/4,77MHz) --> 12,6 sec 
Sinclair ZX81 (Z80A/3,5MHz) (Fast mode) --> 15,8 sec 
Commodore VIC-20 (6502/1MHz) --> 17,1 sec
Apple II (6502/1,022MHz) --> 17,8 sec  
Commodore Plus/4 (8501/1,76MHz) --> 18,8 sec 
Commodore 64 (6510/1MHz) --> 19,5 sec
Spectravideo SVI-328 (Z80A/3,6MHz) --> 19,6 sec
Sinclair ZX Spectrum (Z80A/3,5MHz) --> 20,4 sec 
Commodore 64 (6510/1MHz) (Simon's BASIC) --> 21 sec 
Dragon 32 (6809/0,89MHz) --> 21,6 sec 
Atari 800XL (6502/2MHz) --> 22,8 sec
Commodore 128 (8502/1MHz) --> 23,7 sec 
Texas Instruments TI-99/4A (TMS9900/3MHz) --> 24,5 sec 
Oric Atmos (6502/1MHz) --> 27,4 sec
Oric-1 (6502/1MHz) --> 31,4 sec


Benchmark #5

PC (Celeron/2400MHz) (QBASIC) --> 0,025 sec
Acorn Archimedes A3010 (ARM250/12MHz) --> 0,35 sec
Amiga (68000/7,14MHz) (AMOS) --> 1,35 sec
Atari ST (68000/8MHz) (STOS) --> 1,5 sec  
ZX Spectrum Next (Z80A/28MHz) (Next BASIC) --> 3,55 sec
Amiga (68000/7,14MHz) (ABasic) --> 5,75 sec
Atari ST (68000/8MHz) (Atari BASIC) --> 7,6 sec
Acorn BBC micro model B (6502/2MHz) --> 9 sec
Atari 800XL (6502/2MHz) (Turbo BASIC XL) --> 9,58 sec 
Amstrad CPC 464 (Z80A/4MHz) --> 10,3 sec 
Acorn Electron (6502/2MHz) --> 12,4 sec 
Commodore 128 (8502/2MHz) --> 12,5 sec  
IBM PC (8088/4,77MHz) --> 13,6 sec  
Acorn Atom (6502/1MHz) --> 13,9 sec  
Commodore VIC-20 (6502/1MHz) --> 18,3 sec
Sinclair ZX81 (Z80A/3,5MHz) (Fast mode) --> 18,6 sec 
Apple II (6502/1,022MHz) --> 19,1 sec  
Spectravideo SVI-328 (Z80A/3,6MHz) --> 20,6 sec 
Commodore Plus/4 (8501/1,76MHz) --> 20,8 sec 
Commodore 64 (6510/1MHz) --> 21 sec
Commodore 64 (6510/1MHz) (Simon's BASIC) --> 22,3 sec 
Dragon 32 (6809/0,89MHz) --> 23,3 sec 
Sinclair ZX Spectrum (Z80A/3,5MHz) --> 24 sec 
Atari 800XL (6502/2MHz) --> 25,8 sec
Texas Instruments TI-99/4A (TMS9900/3MHz) --> 26,1 sec  
Commodore 128 (8502/1MHz) --> 26,4 sec 
Oric Atmos (6502/1MHz) --> 33 sec
Oric-1 (6502/1MHz) --> 38 sec


Benchmark #6

PC (Celeron/2400MHz) (QBASIC) --> 0,072 sec
Acorn Archimedes A3010 (ARM250/12MHz) --> 0,66 sec
Amiga (68000/7,14MHz) (AMOS) --> 1,30 sec
Atari ST (68000/8MHz) (STOS) --> 2,2 sec  
ZX Spectrum Next (Z80A/28MHz) (Next BASIC) --> 8,45 sec
Amiga (68000/7,14MHz) (ABasic) --> 9,7 sec
Acorn BBC micro model B (6502/2MHz) --> 13,9 sec
Atari ST (68000/8MHz) (Atari BASIC) --> 14 sec
Atari 800XL (6502/2MHz) (Turbo BASIC XL) --> 14,74 sec 
Acorn Electron (6502/2MHz) --> 18,72 sec 
Acorn Atom (6502/1MHz) --> 19,1 sec   
Amstrad CPC 464 (Z80A/4MHz) --> 19,2 sec 
Commodore 128 (8502/2MHz) --> 20 sec  
IBM PC (8088/4,77MHz) --> 23,5 sec  
Commodore VIC-20 (6502/1MHz) --> 27,2 sec
Apple II (6502/1,022MHz) --> 28,6 sec   
Commodore 64 (6510/1MHz) --> 29,5 sec 
Spectravideo SVI-328 (Z80A/3,6MHz) --> 30,7 sec  
Commodore 64 (6510/1MHz) (Simon's BASIC) --> 34 sec 
Dragon 32 (6809/0,89MHz) --> 34,3 sec  
Commodore Plus/4 (8501/1,76MHz) --> 34,4 sec  
Atari 800XL (6502/2MHz) --> 37,6 sec 
Commodore 128 (8502/1MHz) --> 42,75 sec  
Oric Atmos (6502/1MHz) --> 45,6 sec
Sinclair ZX81 (Z80A/3,5MHz) (Fast mode) --> 49,7 sec 
Oric-1 (6502/1MHz) --> 51,8 sec
Sinclair ZX Spectrum (Z80A/3,5MHz) --> 55,3 sec 
Texas Instruments TI-99/4A (TMS9900/3MHz) --> 61,6 sec  


Benchmark #7

PC (Celeron/2400MHz) (QBASIC) --> 0,096 sec
Acorn Archimedes A3010 (ARM250/12MHz) --> 1,04 sec
Amiga (68000/7,14MHz) (AMOS) --> 1,76 sec
Atari ST (68000/8MHz) (STOS) --> 3,85 sec  
ZX Spectrum Next (Z80A/28MHz) (Next BASIC) --> 12,32 sec
Amiga (68000/7,14MHz) (ABasic) --> 13,2 sec
Atari ST (68000/8MHz) (Atari BASIC) --> 20,65 sec
Acorn BBC micro model B (6502/2MHz) --> 21,2 sec
Atari 800XL (6502/2MHz) (Turbo BASIC XL) --> 24,71 sec 
Acorn Electron (6502/2MHz) --> 28,71 sec  
Amstrad CPC 464 (Z80A/4MHz) --> 29 sec 
Acorn Atom (6502/1MHz) --> 31,1 sec  
Commodore 128 (8502/2MHz) --> 32,5 sec  
IBM PC (8088/4,77MHz) --> 37,4 sec  
Spectravideo SVI-328 (Z80A/3,6MHz) --> 42,2 sec  
Commodore VIC-20 (6502/1MHz) --> 42,7 sec 
Apple II (6502/1,022MHz) --> 44,8 sec  
Commodore 64 (6510/1MHz) --> 47,5 sec
Dragon 32 (6809/0,89MHz) --> 50 sec  
Commodore 64 (6510/1MHz) (Simon's BASIC) --> 54 sec
Commodore Plus/4 (8501/1,76MHz) --> 55,4 sec  
Atari 800XL (6502/2MHz) --> 58,3 sec 
Commodore 128 (8502/1MHz) --> 68 sec  
Sinclair ZX81 (Z80A/3,5MHz) (Fast mode) --> 68,5 sec 
Oric Atmos (6502/1MHz) --> 68,5 sec
Oric-1 (6502/1MHz) --> 77,8 sec 
Sinclair ZX Spectrum (Z80A/3,5MHz) --> 80,7 sec 
Texas Instruments TI-99/4A (TMS9900/3MHz) --> 84,4 sec  


Benchmark #8

PC (Celeron/2400MHz) (QBASIC) --> 0,12 sec
Acorn Archimedes A3010 (ARM250/12MHz) --> 0,85 sec
Amiga (68000/7,14MHz) (AMOS) --> 1,4 sec
Amiga (68000/7,14MHz) (ABasic) --> 9,4 sec
Atari ST (68000/8MHz) (Atari BASIC) --> 9,65 sec
Amstrad CPC 464 (Z80A/4MHz) --> 34 sec  
IBM PC (8088/4,77MHz) --> 35 sec   
ZX Spectrum Next (Z80A/28MHz) (Next BASIC) --> 36,8 sec
Acorn BBC micro model B (6502/2MHz) --> 49,9 sec
Atari 800XL (6502/2MHz) (Turbo BASIC XL) --> 56,53 sec 
Commodore 128 (8502/2MHz) --> 61 sec   
Acorn Electron (6502/2MHz) --> 72,53 sec  
Atari ST (68000/8MHz) (STOS) --> 78,85 sec   
Acorn Atom (6502/1MHz) --> 92 sec  
Commodore VIC-20 (6502/1MHz) --> 99 sec 
Commodore Plus/4 (8501/1,76MHz) --> 106,3 sec   
Apple II (6502/1,022MHz) --> 107 sec  
Commodore 64 (6510/1MHz) (Simon's BASIC) --> 118 sec 
Commodore 64 (6510/1MHz) --> 119,3 sec
Commodore 128 (8502/1MHz) --> 128,5 sec  
Dragon 32 (6809/0,89MHz) --> 129 sec  
Oric Atmos (6502/1MHz) --> 136 sec
Sinclair ZX81 (Z80A/3,5MHz) (Fast mode) --> 229 sec  
Oric-1 (6502/1MHz) --> 230 sec 
Spectravideo SVI-328 (Z80A/3,6MHz) --> 236 sec   
Sinclair ZX Spectrum (Z80A/3,5MHz) --> 253 sec 
Texas Instruments TI-99/4A (TMS9900/3MHz) --> 382 sec   
Atari 800XL (6502/2MHz) --> 412 sec   


Και επειδή με όλα τα μηχανήματα μαζεμένα και όλα τα benchmarks να... χάσατε τη μπάλα (δεν σας αδικώ καθόλου, πιστέψτε με), αν σας κούρασαν όλα τα υπόλοιπα δώστε βάση στην παρακάτω και τελευταία κατάταξη, που βασίζεται στους μέσους χρόνους του κάθε μηχανήματος:

Μέσος χρόνος-Τελική κατάταξη


PC (Celeron/2400MHz) (QBASIC) --> 0,047 sec
Acorn Archimedes A3010 (ARM250/12MHz) --> 0,117 sec
Amiga (68000/7,14MHz) (AMOS) --> 1,2 sec
Amiga (68000/7,14MHz) (ABasic) --> 6,24 sec
Atari ST (68000/8MHz) (Atari BASIC) --> 8,64 sec
ZX Spectrum Next (Z80A/28MHz) (Next BASIC) --> 8,71 sec
Atari ST (68000/8MHz) (STOS) --> 11,3 sec    
Acorn BBC micro model B (6502/2MHz) --> 14,3 sec
Amstrad CPC 464 (Z80A/4MHz) --> 14,5 sec  
Atari 800XL (6502/2MHz) (Turbo BASIC XL) --> 15,85 sec  
IBM PC (8088/4,77MHz) --> 17,6 sec   
Commodore 128 (8502/2MHz) --> 19,35 sec   
Acorn Electron (6502/2MHz) --> 20,05 sec  
Acorn Atom (6502/1MHz) --> 22,8 sec  
Commodore VIC-20 (6502/1MHz) --> 28,7 sec 
Apple II (6502/1,022MHz) --> 30,4 sec   
Commodore 64 (6510/1MHz) --> 33,1 sec
Commodore Plus/4 (8501/1,76MHz) --> 33,13 sec   
Commodore 64 (6510/1MHz) (Simon's BASIC) --> 35,1 sec 
Dragon 32 (6809/0,89MHz) --> 36,2 sec  
Commodore 128 (8502/1MHz) --> 40,68 sec  
Oric Atmos (6502/1MHz) --> 44,1 sec
Spectravideo SVI-328 (Z80A/3,6MHz) --> 46,7 sec    
Sinclair ZX81 (Z80A/3,5MHz) (Fast mode) --> 51,2 sec  
Sinclair ZX Spectrum (Z80A/3,5MHz) --> 58,5 sec  
Oric-1 (6502/1MHz) --> 59,6 sec 
Atari 800XL (6502/2MHz) --> 73,1 sec  
Texas Instruments TI-99/4A (TMS9900/3MHz) --> 76,6 sec

Ουφ, τέλος. Επιτέλους!

Τι συμπεράσματα μπορούμε να εξάγουμε από την παραπάνω (τελική) κατάταξη; Λοιπόν, το πρώτο και προφανέστερο όλων είναι ότι το πού βρέθηκε τελικά το κάθε μηχάνημα στην παραπάνω λίστα οφείλεται κατά μεγάλο μέρος στο 8ο benchmark: αν την "πάλεψε" σε αυτό θα τα πήγε γενικώς καλά. Αν όχι, θα την έπαθε σαν τον Atari ST (STOS) που ενώ κανονικά θα τερμάτιζε στην 3η θέση, το 8ο benchmark τον... καταβαράθρωσε στην 6η! Επίσης συμπεραίνουμε ότι όλα τα μηχανήματα της Acorn, ανεξαρτήτως εποχής και αρχιτεκτονικής ήταν εξαιρετικά γρήγορα (στην BASIC, πάντα). Ότι υπάρχει χάσμα μεταξύ 8bit και 16bit μηχανημάτων. Ότι ο IBM PC μάλλον τελικά δεν επικράτησε για την ταχύτητά του (λες και δεν το ξέραμε!). Ότι ο VIC-20 ήταν ο πλέον "τίμιος" 8μπιτος Commodore σε ό,τι είχε να κάνει με την σβελτάδα της BASIC. Ότι ο Apple II, παρά τα χρονάκια του (μιλάμε για υπολογιστή του 1977, αν θυμάστε) τα πήγαινε γενικώς καλά. Ότι αν είχαμε μετρήσει τον ZX81 σε SLOW mode ακόμα θα χρονομετρούσαμε! Ότι ο Oric Atmos με τον Oric-1 είχαν αρκετά μεγάλη διαφορά στην ταχύτητα μόνο και μόνο χάρη στην επιδιόρθωση κάποιων bugs στην ROM (κατά τα άλλα σαν hardware ήταν ίδιοι). Ότι τα μηχανάκια της Sinclair καθώς και οι 8bit Atari γενικώς... σερνόντουσαν. Ότι η Turbo BASIC XL έδινε πραγματικά φτερά στα 8μπιτα Atari, μετατρέποντάς τα από ουραγούς σε ισάξιους ανταγωνιστές των κορυφαίων 8bit micros. Ότι ο ZX Spectrum Next, όπως ήταν αναμενόμενο για ένα τόσο σύγχρονο μηχάνημα, παίζει σε μια δική του κατηγορία, μεταξύ 8μπιτων και 16μπιτων. Και, τέλος, ότι το πλέον αργό μηχάνημα του συγκριτικού είχε 16μπιτο επεξεργαστή (TI-99/4A)!

 Φυσικά, το ένα και απόλυτο συμπέρασμα ως απόρροια όλων των παραπάνω αλλά και όλων των προηγούμενων είναι ότι, τελικά, για την ταχύτητα που μπορεί να πετύχει η BASIC κάποιου υπολογιστή παίζει πολύ μεγαλύτερο ρόλο η ίδια η διάλεκτος της γλώσσας, παρά τα MHz, ο επεξεργαστής, τα custom chipsets και οτιδήποτε άλλο...

Αυτά. Ελπίζω να το χαρήκατε κι εσείς όσο και εγώ (λάθος κατακλείδα, έτσι; Κάτι κατάλαβα...).

4 σχόλια:

  1. Το συμπέρασμα που αναφέρεις στο τέλος είναι όλο το "ζουμί"...
    Όποιος δεν το υποψιαζόταν ή δεν το κατάλαβε έστω και τώρα μετά από τα άρθρα σου, μάλλον πρέπει να ξανασκεφτεί τη σχέση του με τους υπολογιστές...

    ΑπάντησηΔιαγραφή
    Απαντήσεις
    1. Χαχαχα! Πιστεύεις πως όποιος δεν κατάλαβε είναι ο τύπος που θα κάτσει να προβληματιστεί για το επίπεδο της σχέσης τους με τους υπολογιστές; Φοβάμαι πως όχι!

      Διαγραφή
  2. Ολο λεω να αφησω ενα Kudos σχολιο για την προσπαθεια σου και ολο το αμελω. Συγχαρητηρια! Το ειχα χρονια στο μυαλο μου να το κανω αλλα ποτε δεν την παλεψα. Καλη φαση που καποιος το εκανε και μαλιστα τοσο μεθοδικα.

    Wally

    ΑπάντησηΔιαγραφή
    Απαντήσεις
    1. Σε ευχαριστώ πολύ - το εκτιμώ ιδιαίτερα! Ελπίζω στο μέλλον να κάνω κάτι αντίστοιχο που να περιλαμβάνει και γραφικά, text output και άλλα τέτοια ωραία. Αν βρεθεί καιρός θα ασχοληθώ, πού θα μου πάει;

      Διαγραφή

Το σχόλιό σας θα δημοσιευθεί μετά από έλεγχο του διαχειριστή του blog προς αποφυγή spam σχολίων. Σας ευχαριστούμε για την κατανόηση.