Παρασκευή, 20 Μαρτίου 2020

The speed of BASIC (μέρος 3ο)

Τις τελευταίες μέρες δεν μπορώ παρά να αναρωτηθώ "τι σκατά θέλουμε, επιτέλους;". Ή, μάλλον, σε αυτό το συγκεκριμένο, θα βγάλω τον εαυτό μου απ' έξω. Διότι αφ' ενός (νομίζω ότι) ξέρω πάνω-κάτω τι θέλω και αφ' ετέρου δεν γκρινιάζω για την τρέχουσα κατάσταση. Ναι, σε αυτό το περίφημο "μένουμε σπίτι" αναφέρομαι. Και γι' αυτό, για να επανέλθω στο αρχικό ερώτημα, "τι σκατά θέλουν, επιτέλους;".

Και αναφέρομαι καλοί μου φίλοι και φίλες, κυρίως στους ρετρο-κομπιουτεράδες. Ναι, σε αυτούς που τόσα χρόνια μαζεύουν υπολογιστές, περιφερειακά και software (βλ. παιχνίδια). Δεκάδες - τουλάχιστον - μηχανήματα, πάμπολλα περιφερειακά παλιά και νέα, και, κυριολεκτικά, πολλές χιλιάδες παιχνίδια και demos. Ντάνες (!) TOSECs για κάθε λογής format, λες και αν κάποιος δεν έχει στην κατοχή του την budget γερμανική έκδοση του Robocop για την Amiga, την pre-alpha demo release του Jet Set Willy για τον ZX Spectrum ή τουλάχιστον διψήφιο αριθμό προγραμμάτων επεξεργασίας κειμένου για Commodore 64 θα αντιμετωπίζεται από τους συν-χομπίστες του ως μαύρο πρόβατο. Και, έστω, ας υποθέσουμε για το καλό του όλου συλλογισμού ότι αυτό ισχύει, ότι όντως είναι απαραίτητο να τα έχει μαζέψει κάποιος όλα αυτά. Και ερωτώ λοιπόν: πώς γίνεται τώρα που είναι κλεισμένοι σπίτια τους να γκρινιάζουν; Έλεος δηλαδή, έχουν software και hardware για να ασχοληθούν για 17 ζωές χελώνας έκαστος! Να μην πω για κάτι άλλους που έχουν μαζέψει 5-10 Terrabytes σε .mp3 (!) κι άλλα 10-15 σε τηλεοπτικές σειρές και ταινίες αλλά δεν έχουν βάλει γλώσσα μέσα από τη γκρίνια τώρα που αναγκάστηκαν να "κλειστούν σε 4 τοίχους"! 

Ξέρω, είναι χαρακτηριστικό της φύσης του ανθρώπου να θέλει πάντοτε αυτό που δεν έχει, αλλά θεωρώ ότι από κάποιο σημείο (και κυρίως από κάποια ηλικία) και πέρα οφείλουμε να συνειδητοποιούμε κάποια πράγματα και να καταφέρνουμε να εισπράξουμε χαρά και ικανοποίηση από αυτά που έχουμε χωρίς να μιζεριάζουμε για ό,τι δεν διαθέτουμε και μπορεί κιόλας να μην αποκτήσουμε ποτέ. Φυσικά όλα αυτά άπτονται της κοσμοθεωρίας και της φιλοσοφίας του καθενός (αν διαθέτει).

Τώρα τι κάθομαι και σας γράφω τόση ώρα θα μου πείτε... Να, μου ήρθαν τα παραπάνω στο μυαλό γιατί προσωπικά εδώ και χρόνια ψάχνω την ευκαιρία να βρω τον χρόνο (πρωτίστως) και να κάτσω στο σπίτι (δευτερευόντως) να διαβάσω βιβλία που δεν πρόλαβα, να παίξω παιχνίδια που αγόρασα και ποτέ δεν πρόλαβα καν να εγκαταστήσω, να πειραματιστώ με γλώσσες προγραμματισμού και υπολογιστές που ποτέ δεν αξιώθηκα να το κάνω, να ακούσω δεκάδες μουσικά albums που έχω σταμπάρει, να δω ταινίες, να γράψω για το Retro Planet ή για αυτό εδώ το blog, να, να, να... Και ενώ το να κλειστούμε σπίτια μας μοιάζει - αναφορικά με τα προηγούμενα - με θεόσταλτο δώρο, ο χρόνος, δυστυχώς, συνεχίζει να μην υπάρχει. Ή, τουλάχιστον όχι όσος θα ήταν επαρκής για όλα αυτά. Και από την άλλη έχεις κόσμο και κοσμάκη να σου στέλνει memes και βιντεάκια του τύπου "1η μέρα στο σπίτι", "2η μέρα στο σπίτι", "3η μέρα στο σπίτι", κ.ό.κ.. Έλεος, πια: αν εσείς δεν έχετε πώς να σκοτώσετε την ώρα σας όταν βρίσκεστε στο σπίτι σας το θέμα μάλλον είναι ότι δεν έχετε ενδιαφέροντα, και όχι ότι όλα σας τα hobbies είναι εξωτερικού χώρου! Εκτός φυσικά αν θεωρείτε ως ασχολία το να συνωστίζεστε στις καφετέριες, οπότε πάω πάσο...

Anyway, στα δικά μας. Επιστρέφοντας στα περίφημα benchmarks του Personal Computer World (και ακούγοντας Γιώργο Τσίγκο & Μαύρους Κύκλους - ο σουρεαλισμός σε όλο του το μεγαλείο), θα ασχοληθούμε με τα 2 τελευταία και πλέον χρονοβόρα, προτού δοκιμάσουμε - στο επόμενο και τελευταίο μέρος - τα 16/32μπιτα μηχανήματα. Πάμε λοιπόν στα 2 ακροτελεύτια (που θα έλεγε κι ο Αλέξης Σπυρόπουλος) BASIC benchmarks την ώρα που ο Τσίγκος ξεφυσάει νικοτίνη και θειάφι και ουρλιάζει ματώνοντας το λαιμό του για όλα τα χαμένα βράδια μας...


Benchmark #7

20 LET k=0
25 DIM m(5)
30 LET k=k+1
40 LET a=k/2*3+4-5
45 GOSUB 700
46 FOR l=1 TO 5
47 LET m(l)=a
48 NEXT l
50 IF k<1000 THEN GOTO 30
60 STOP
700 RETURN


Αυτή τη φορά, επιπροσθέτως των όσων συνέβαιναν στο 6ο benchmark, σε κάθε loop γεμίζουμε με τα αποτελέσματα της πράξης της εντολής 40 τα 5 κελιά του πίνακα m που δημιουργήσαμε με την εντολή 25. Αυτό έχει ως αποτέλεσμα η εκτέλεση του 7ου benchmark να παίρνει περισσότερο χρόνο συγκριτικά με το προηγούμενο...

PC (Celeron/2400MHz) (QBASIC) --> 0,096 sec
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 VIC-20 (6502/1MHz) --> 42,55 sec 
Commodore 64 (6510/1MHz) --> 47,5 sec
Commodore Plus/4 (8501/1,76MHz) --> 55,4 sec   
Atari 800XL (6502/2MHz) --> 60,1 sec
Commodore 128 (8502/2MHz) --> 68 sec
Sinclair ZX81 (Z80A/3,5MHz) (Fast mode) --> 68,5 sec
Sinclair ZX Spectrum (Z80A/3,5MHz) --> 77,6 sec

Αν το παρατηρήσατε, η κατάταξη είναι ακριβώς η ίδια με αυτήν του 6ου benchmark. Η BBC BASIC δείχνει για μία ακόμα φορά τα δόντια (και τα "γκάζια") της, με τον Amstrad CPC να υπενθυμίζει ότι δεν ήταν μονάχα φτηνός και πλήρης, αλλά διέθετε και μία ταχύτατη για τα δεδομένα της κατηγορίας διάλεκτο της γλώσσας BASIC. Για τα μηχανήματα της Commodore δεν μπορεί κανείς να πει πολλά πράγματα αφού, για μία ακόμα φορά, όλοι οι μεταγενέστεροι υπολογιστές υπολείπονται σε ταχύτητα του VIC-20 (!), ο Atari είναι για μία ακόμα φορά στις τελευταίες θέσεις της κατάταξης, ενώ, για τα μηχανήματα της Sinclair θα πρέπει να δεχτούμε ότι, τόσο φτηνά που ήταν, μάλλον δικαιολογούνταν να μην τα πηγαίνουν και πολύ καλά σε κάποιους τομείς (σε κανέναν, θα διόρθωναν οι κακεντρεχείς)...


Benchmark 8
20 LET k=0
25 DIM m(5)
30 LET k=k+1
40 LET a=k^2
45 LET b=LN(k)
47 LET c=SIN(k)
50 IF k<1000 THEN GOTO 30

Αρκετά διαφοροποιημένο το προγραμματάκι μας αυτή τη φορά, αφού πλέον υπολογίζει ημίτονα, δυνάμεις, λογαρίθμουςκαι, γενικώς, τσιτώνει την CPU του υπολογιστή μας. Το 8ο benchmark είναι με διαφορά το πλέον αργό και απαιτητικό, με κάποιους εκ των διαγωνιζομένων να μην διαθέτουν στο οπλοστάσιό τους όλες τις απαραίτητες εντολές για να το εκτελέσουν (Atari) και κάποιους άλλους να τεστάρουν γερά τα νεύρα και την υπομονή μας. Θαυμάστε:

PC (Celeron/2400MHz) (QBASIC) --> 0,120 sec
Amstrad CPC 464 (Z80A/4MHz) --> 34,48 sec 
Acorn BBC Micro model B (6502/2MHz) --> 49,9 sec
Acorn Electron (6502/2MHz) --> 72,53 sec
Commodore VIC-20 (6502/1MHz) --> 97,9 sec 
Commodore Plus/4 (8501/1,76MHz) --> 106,3 sec   
Commodore 64 (6510/1MHz) --> 119,3 sec
Commodore 128 (8502/2MHz) --> 128,5 sec
Sinclair ZX81 (Z80A/3,5MHz) (Fast mode) --> 162 sec
Sinclair ZX Spectrum (Z80A/3,5MHz) --> 239 sec
Atari 800XL (6502/2MHz) --> - sec

Εξετάζοντας τα αποτελέσματα της πλέον απαιτητικής δοκιμασίας από όλες τις προηγούμενες διαπιστώνουμε ότι ο Amstrad CPC που πάντα βρισκόταν μέσα στην πρώτη (ταχύτερη) τριάδα έκανε το ντεμαράζ του στην τελική ευθεία και βρέθηκε μπροστά από τα δύο μοντέλα της Acorn, για πρώτη και τελευταία φορά. Φυσικά, τα μηχανήματα της Αγγλικής εταιρίας σε όλη την διάρκεια των tests έδειξαν με τον πλέον πειστικό τρόπο ότι η BBC BASIC πέρα από πλήρης ήταν και ταχύτατη, κάτι που φυσικά ισχύει και για την Locomotive BASIC (Amstrad CPC). Οι υπολογιστές της Commodore βρίσκονται σταθερά από τη μέση μέχρι το τέλος της κατάταξης, με τον VIC-20, επίσης σταθερά, ταχύτερο από τους ομόσταυλούς του. Τέλος, οι υπολογιστές της Sinclair, όπως και στα υπόλοιπα benchmarks θέτουν νέα στάνταρντς στην... βραδυπορεία (!) με την Sinclair BASIC να είναι τίμια μεν, πάναργη δε. Και σκεφτείτε να δοκιμάζαμε τον ZX81 σε SLOW mode λειτουργίας: ακόμα θα μετρούσα...


Ολοκληρώνοντας θα σας δώσω ραντεβού - κορονοϊού θέλοντος - για το επόμενο, 4ο και τελευταίο μέρος της σειράς αυτής των αναρτήσεων, με τους Atari ST, Commodore Amiga και Acorn Archimedes να παίρνουν την σκυτάλη από τα 8μπιτα δοκιμάζοντας τις ταχύτητες των δικών τους διαλέκτων της BASIC...

5 σχόλια:

  1. Μας έσκισε ο acorn.
    Βασικά στη default basic, υπάρχουν και άλλα τεστ στα οποία θα είχαμε ρολόι αποτελεσμάτων.
    Δύσκολα πάντως συγκρίνεις διαφορετικές αρχιτεκτονικές.

    ΑπάντησηΔιαγραφή
    Απαντήσεις
    1. Φίλε, να σου πω κάτι; Προσωπικά θα ήθελα να συγκρίνω και την ταχύτητα απεικόνισης κειμένου και γραφικών στην οθόνη, τον χρόνο μεταφοράς ενός block μεγέθους π.χ. 4Κ από μία θέση της RAM σε μία άλλη, κλπ. Αλλά δεν υπάρχει κάτι επίσημο εκεί έξω σε σχέση με τα παραπάνω. Τι λες, να φτιάξω κάτι δικό μου;

      Διαγραφή
    2. Ναι να φτιάξεις αλλά και πάλι θα σου πω το ίδιο.
      Η απεικόνιση π.χ στο Amstrad είναι αργή, αν όμως είναι compiled πάει σφαίρα.
      Πραγματική άκρη δεν θα βγάλεις αλλά θα έχει πλάκα το ταξίδι.

      Διαγραφή
    3. Κοίτα, με compiled BASICs θα μπω σε ένα τριπάκι από το οποίο δεν θα βγω ποτέ: ο κάθε υπολογιστής έχει καμιά δεκαριά από δαύτες (!) η πλειοψηφία των οποίων δεν υποστηρίζει όλες τις εντολές της μαμίσιας BASIC, κλπ. Σίγουρα θα έχει ενδιαφέρον να δεν κανείς μέχρι πόσο γρήγορα μπορεί να πάει ένα παλιό μηχάνημα με compiled BASIC προγράμματα και όντως, δεν πρόκειται να εξαχθεί κάποιο σοβαρό συμπέρασμα που θα αλλάξει τον τρόπο που αντιμετωπίζουμε το κάθε μηχάνημα. Αλλά ναι, θα έχει πλάκα το ταξίδι και χαίρομαι που το γράφεις γιατί είσαι από τους λίγους που μπορούν να το καταλάβουν!

      Υ.Γ.: Στον CPC τι είχες δοκιμάσει; Τον Laser compiler;

      Διαγραφή
    4. Όχι, ο Άρης πρέπει να το έχει κάνει.

      Διαγραφή

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