INFO - FAQ - CC2-Forum - CCPro-Forum |
Bei der alten C-Control (Version 1.1) wurden rund 85% der benötigten Ausführungszeit für die Interpretation und das Lesen der Token verschenkt. Besonders das Lesen der Token war ein extremes Nadelöhr - die C-Control verbrachte fast 60% ihrer Zeit mit dem Holen der Token aus dem EEPROM über den I²C-Bus! Wenn man beides ausschaltet und die entsprechenden Betriebssystemroutinen direkt, also innerhalb eines nach Maschinensprache kompilierten Programms, aufruft, werden BASIC-Programme immerhin siebenmal schneller ausgeführt. Das sich kein größerer Gewinn ergibt, liegt am Konzept der C-Control alle Berechnungen und Wertzuweisungen mit Hilfe eines sogenannten Rechenstacks auszuführen. Durch die konsequente Verwendung des Rechenstacks kann die C-Control auch komplexe Berechnungen durchführen, nur leider benötigt das Pushen und Poppen relativ viel Zeit. Der Rechenstack stellt sich als große Bremse heraus. Mit einem optimierten echten C-Control-Kompiler, der Programme nach Maschinensprache, statt in "Token" übersetzt, ergibt sich hingegen eine bis zu 250-fach höhere Ausführungsgeschwindigkeit! Solch ein Kompiler existiert bereits. Siehe CCBAS2MC in der Download-Area. Leider läßt sich der Kompiler *NICHT* auf der neuen C-Control einsetzen, da die Ausführung von Assemblerprogrammen bekanntlich unterbunden wurde! Der BASCOM sollte übrigens ähnlich gute Ergebnisse liefern, weshalb ich mir nicht erklären kann, wie Carsten eine nur 40-fach höhere Ausführungsgeschwindigkeit gegenüber der alten C-Control messen konnte. Besonders, da die Atmel-Controllern schneller getaktet werden und Dank RISC deutlich schneller sind. Es sei denn, der BASCOM erstellt nur relativ schlechte Kompilate. Gruß Dietmar Meine Homepage: http://ccintern.dharlos.de |
Antwort schreiben |