Hello, Guest the thread was viewed96k times and contains 709 replies

last post from Goodwell at the

Heute so compiliert...

  • So, ich starte mal einen neuen Thread, vielleicht interessiert es ja den einen oder anderen. Wer mich kennt, weiß, dass ich viel Blödsinn und damit auch viel Nonsens im Kopf habe :P Ursprünglich wollte ich eigentlich wissen, welches meiner Laufwerke letztlich am Schnellsten ist. Zur Auswahl habe ich eine 1541-II, 1571 und 1581 replika. Es scheint, dass die 1581 replika ( androSID Du bist genial!) erwartungsgemäß das Rennen gemacht hat. Meine 1571 scheint aber doch nicht so schnell zu sein... ich hatte immer den Verdacht, dass sie schneller ist als die 1541-II.


    Was habe ich gemacht? Ich habe 3 Programme durch eine Vielzahl von Compilern gejagt, alle Geräte sind mit Jiffydos ausgerüstet. Alles wurde auf echter Hardware durchgeführt, ein Emulator ist ja schließlich nur ein Notbehelf, denn mehr als 8 Bit sind entbehrbarer Luxus :thumbsup: Entsprechend habe ich die Compilier-Zeiten mit einer Funkuhr "gestoppt".


    Folgende Programme habe ich compiliert:

    1. Commercial town (Monopoly) aus dem 64er Sonderheft 03/1985

    2. 10 REM

    3. Hi-Eddi Ladeprogramm, Listing des Monats der 64er 01/85


    Die Ergebnistabelle schaut so aus:

    Vielleicht führe ich die Liste ja auch mal fort, wer weiß?

  • Sooo, es kommt ein neuer Teil der Reihe. Heute habe ich mal ein Augenmerk auf die Leistung der Compilate gelegt.


    1. Geschachtelte For-Next Schleife (außere Schleife 0-10, innere Schleife 0-10000)

    2. Beschreiben aller 1000 Integer-Array-Elemente mit 0

    3. Beschreiben aller 1000 String-Array-Elemente mit "A"

    4. Alle 1000 String-Array-Elemente "A" anhängen

    5. 1000x Berechnung des Cosinus (Anm.: wer sich den Quelltext im Anhang ansieht, das Argument war mir egal, hauptsache er rechnet)

    6. Beschreiben aller 1000 Real-Array-Elemente mit 0


    Die Tests 1-6 nochmal, allerdings mit Integer-Variablen als Laufvariablen. Dementsprechend habe ich im Basic64 Optimierung 1 gewählt, damit die Variablen auch so benutzt werden, wie ich es wollte.


    Gemessen habe ich mit der internen TI-Variable, die sollte für die Zwecke ausreichend sein. Weitere Optimierungen habe ich der Vergleichbarkeit wegen nicht gemacht (gerade beim Basic-Boss wäre da wahrscheinlich durchaus noch mehr möglich).


    Folgende Compiler haben den Dienst verweigert:

    Hypra-Compiler und Laser-Basic-Compiler: mögen beide kein FOR X%

    Speedcompiler: schmeißt direkt beim DIM-Befehl einen Out of memory

    Abkürzungen: Boss = Basic-Boss 2.40 B64 = Basic 64 V1.03 (-P Mode oder -M Mode), AC=Austro-Compiler, AS = Austro-Speed, SC = Simons's Compiler, Sau = Saurons Blitz, Pet = Petspeed, DTL = DTL-Compiler 64.4


    Hier ist die Ergebnistabelle:


    Ich hoffe, Euch haben meine zwei Tests gefallen. Wenn jemand eine schöne Idee hat, wie man die ganze Compiler-Kollektion zum Schwitzen bringt, mache ich gerne mit der Reihe weiter.

  • So, ich habe meine Compiler-Tests um den BASS-Compiler ergänzt.


    Anmerkungen dazu: der BASS mag die 1581 nicht, weshalb hier keine Zeitmessung vorgenommen werden konnte. Zudem mag er kein FOR X%, weshalb ich die Tabelle aus dem zweiten Teil dieser Serie nicht aktualisiert habe bzw. auch gar nicht aktualisieren konnte. Zudem hat der BASS ein Problem mit dem kleinsten Testprogramm, nämlich 10 REM. Das kompiliert er gar nicht, weshalb ich es durch 10 PRINT ersetzt habe.

    Beim Monopoly brauchte ich eine komplett leere 1571 Diskette (1328 Blocks minus Programm), sonst reichte der Platz für das Programm mit 129 Blocks nicht!

    Was die (nicht vorhandenen) Qualitäten dieses Compilers anbetrifft, haben wir in einem anderen Thread ja schon recht viel festgestellt ;-)


  • Den Laufzeit-Benchmark habe ich aufgrund von eigenen Ideen und Mithilfe von Usern hier erweitert. Da das Ergebnis zunehmens unübersichtlich wurde, habe ich das Benchmark-Programm gleich um eine halbwegs übersichtliche Ausgabe erweitert. Das interessante Ergebnis dabei: der Sauron-Compiler hat als Einziger tatsächlich Probleme mit dem TAB-Befehl.

    Eigentlich habe ich das Ganze schon ein paar Tage fertig, war aber die ganze Zeit zu faul, die Zahlen abzutippen ;)


    Folgende Tests sind jetzt enthalten:


    1. Geschachtelte For-Next-Schleife (äußere Schleife 0-10, innere Schleife 0-10000)

    2. Beschreiben aller 1000 Integer-Array-Elemente mit 0

    3. Beschreiben aller 1000 String-Array-Elemente mit "A"

    4. Alle 1000 String-Array-Elemente ein "A" anhängen

    5. 1000x Berechnung des Cosinus

    6. Beschreiben aller Real-Array-Elemente mit 0

    7. Kompliziertere IF-Abfragen

    8. DEF FN

    9. Wie 8, nur als GOSUB-Aufruf und ohne DEF FN

    10. PRINT-Test

    11. SYS49152,X,Y-Aufruf (hier: eine PRINT AT-Routine)


    Hinweis: die Blockgröße ist bei Petspeed nur bedingt aussagekräftig, da der SYS-Test aufgrund Nicht-Compilierbarkeit weggelassen wurde.


    Weitere Tests füge ich gerne dazu, wenn Bedarf dazu besteht.


    Edit: beim Übertragen ist mir leider eine Zeile verloren gegangen.

  • Merkwürdigerweise kann ich meinen Eintrag nicht editieren.


    Im Nachgang ist noch aufgefallen, dass der Sauron-Blitz beim PRINT AT/SYS-Test Probleme hat (Test 11): er stellt nämlich keine Leerzeichen dar! Der Austro-Speed zeigt übrigens das gleiche Verhalten, die beiden scheinen also recht identisch zu sein.


    Danke an 1570 für den Hinweis, mir ist das selber gar nicht aufgefallen, denn bei den langen Laufzeiten bei den Benchmarks sitze ich ja auch nicht minutenlang vor dem Fernseher und warte , bis sich endlich was tut ;)

  • Danke an 1570 , er hat mich auf zwei weitere Ideen für weitere Benchmarks gebracht, zusätzlich habe ich einen weiteren Test implementiert.


    Folgende Compiler fliegen bei künftigen Tests raus: Simon's Compiler (gleicht dem Austro-Comp) und Sauron-Blitz (gleicht dem Austro-Speed).


    Um mehr Compiler zu erwischen, habe ich das Benchmark-Programm ergänzt, damit der Speedcompiler nicht direkt in einem OUT OF MEMORY bei den Dimensionierungen läuft.

    Für Speedcompiler und Petspeed wird kein SYS-Test durchgeführt, den erweiterten SYS-Aufruf mögen beide nicht.

    Für Hypra-Comp und Laser-Compiler wird der zweite Teil der Benchmarks (Integer-Laufvariablen) nicht durchgeführt.


    Und: unser aller Liebling, der BASS-Compiler sollte auch teilnehmen dürfen :bgdev Zudem werde ich testen, ob der CD-Compiler (natürlich der Mod von Stephan Scheuer ) und der CDU-Compiler teilnehmen können.


    Ihr seht, die Tabelle wird umfangreicher werden. Wahrscheinlich muss ich mir etwas einfallen lassen, damit das überhaupt noch hier im Forum dargestellt werden kann. Möglicherweise kann ich das durch eine 90° Rotation erreichen. Was ich gerne machen würde, das wird aber nicht klappen: die Zweiteilung der Tabelle in REAL- und INTEGER-Variablen aufheben, aber ich fürchte, auch hier wird es Darstellungsprobleme geben werden.


    Ihr seht, die Ideen gehen noch nicht aus.


    Stay tuned...

  • Petspeed gibt es afaik nur eine Version am Cevi.

    Den Mikro-Compiler kenne ich, da gibt es noch mehrere Compiler in der Kategorie, auch in einem Chip Sonderheft gab es mal so einen und in der 64er auch (Ascomp). Ich hatte ja schon mal gesagt, evtl. auch einen Vergleich machen könnte. Leider bleibt mein Engagement aber deutlich reduziert, solange ein bestimmter Username in rot erscheint.

  • Petspeed gibt es afaik nur eine Version am Cevi.

    Ich habe zwei verschiedene Versionen für den C64. Vielleicht auch eine dritte - leider ist hier meine Diskette kaputt. Originalbilder siehe #18 in Deinem Thread "Compiler".


    Hier die Startbilder.



    Die linke Version (V1) siehe hier:


    https://csdb.dk/release/?id=116499


    Die rechte Version (V2) ist in der F64 Wolke zu finden.


    Wie Du in Version 2 sehen kannst steht hier "Issue 4.0", was vermuten läßt, dass es noch andere Versionen gibt.



    Leider bleibt mein Engagement aber deutlich reduziert, solange ein bestimmter Username in rot erscheint.

    Ich verstehe hier nicht was Du meinst. Ist mein Username rot? Wenn ja was heißt das?

  • Die Wolke geht zur Zeit nicht.


    Hier ist die Version 2.


    Für den Farbcode brauchst Du das Farbchart. Das Farbchart findest du in den Manual-pdfs. Siehe die links im anderen Thread.


    Mit dieser Version gehen auch größere Programme, da du hier z.b. 2 1541 Floppys "8" und "9" verwenden kannst.