000
26.02.2007, 15:36 Uhr
Blubber2063
|
Nach SubaEsels Fragen zu einem BrainfuckInterpreter hatte ich mir aus yux mal die Mühe gemacht auch einen zu schreiben der vorher ne Analyse fährt. Naja jedenfalls ist bis jetzt das bei rausgekommen. Projekt Tatsache ist aber das mir der Optimierer wegen einem const modifier, den der gcc angemahnt hatte jetzt mit dem gcc aus einem mir nicht erklärlichen Grund nicht mehr compiliert. Der Compiler von Visual Studio compiliert das Projekt aber anstandslos.
Davon aber mal unabhängig hab ich ein kleines Performance Problem, zumindest in Vergleich zu nem anderen BF Interpreter.
Die Analyse ist recht "Zeitaufwendig", aber darum gehts mir eigentlich nicht, sondern um die Ausführungszeit. Obwohl Kommentare hier auch erwünscht sind. Ich hatte mir bei Wikipedia zum testen das Hello World Programm geladen und da merkt man den Unterschied auch nicht. Aber ich bin dort eben auch auf ein Textadventure gestossen, ist auf der Seite unten verlinkt. Damit gelangt man hier hin. Das File ist knapp 2MB Gross und braucht ewig bis die Erste Ausgabe steht, bei dem Mitgelieferten BF Interpreter steht sie fast sofort.(Der Quellcode ist auch mitgeliefert). Ich hab mich dann gefragt woran der grosse Unterschied liegt.
Daraufhin habe ich erstmal optimiert in dem ich Folgen von Additionen zu einer zusammengefasst habe.
Danach dauerte das erscheinen des Textes immer noch ewig.
Nun habe ich gedacht das es vielleicht an der dynamischen Typbindung liegt und das ich für jeden Befehl einen Funktionscall mache. Also habe ich das ganze in einer Schleife extern geregelt.
Problem: Die Anzeige dauert immer noch Jahre. Meine letzte Idee wäre jetzt das der Iterator über die Listen nicht effizient Implementiert ist, aber ich bin langsam echt ratlos warum die Ausführung um so vieles langsamer läuft.
Achja mein Code sollte eigentlich auch unter Unix Systemen laufen, sofern das GCC const Problem gelöst ist. Dieser Post wurde am 26.02.2007 um 15:36 Uhr von Blubber2063 editiert. |