Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
OnePassCompiling!
#1
Hi,

ich habe eine Möglichkeit gefunden das man Sourcecodes in nur eine Pass Compilieren kann, der einzigste Nachteil ist das die resultierenden Executables dann so groß sind wie der verwendetet Puffer. Momentan habe ich 3,5MB ohne und 12,5MB mit Debuginfo (für den REDDebugger) eingestellt das reicht von AIDE bis PfP.

Es ist Standardmässig deaktiviert und kann über die Tooltype "ONEPASSCOMPILING" für die AmiBlitz IDE (PED) aktiviert werden, für den CLI-Modus bzw. AIDE über den zusätzlichen Parameter "-1" oder "-1pass" beim Aufruf.
Über die Comnpilereinstellung "make smaller code" wir es dann gesteuert deaktiviert wir OnePassCompiling mit großen Puffern verwendet, sollten die Puffer zu klein sein wir ein zweiter Pass gemacht mit nochmals vergrößerten Puffern.
Bei Verwendung von "make smaller code" werden die Standartpuffer verwendet und das TwoPassCompiling so wie bisher was in eine Programmspezifischen Excutablegröße resultiert. Dies ermöglicht auch bei aktiviertem "ONEPASSCOMPILING" das Erzeugen von kleinen bzw. kleinst möglichen Executables.

Ich habe für die Verwendung der großen Puffer eine Abfrage des freien Speichers vorgeschaltet für compilieren ohne Debuginfo darf der Puffer nicht größer als ein Viertel und bei compilieren mit Debuginfo nicht größer als die Hälfte des freien Speichers sein.

Ich hoffe das hilft und spart euch zeit beim Testen :-D

Ich commite es wenn Soureforge wieder funktioniert!
Zitieren
#2
Das ist cool, weil in AIDE zum testen braucht man nur einen pass. Wenn man ein "Release" erstellt kann man ja dann 10-passes machen.
Danke!
Zitieren
#3
Der Wanderer schrieb:Wenn man ein "Release" erstellt kann man ja dann 10-passes machen.
Danke!

Das habe ich auch gelöst und die ganze Funktion "Erzeuge minimal Exe" bzw "Release" in den Compiler verschoben wo sie hingehört. Es braucht jetzt nur noch 5-6 Passes mit Erzeugung von .dbg Datei einen mehr um die Kleinstmögliche Exe zu erzeugen. Der Vorteil der Compiler weiß alle Daten und die exe muss nicht mehr gespeichert werden bei jedem (zweiten) pass was eine erheblich Zeitersparnis auf Klassiksystemen ist und die Statusinfo zeigt jetzt auch den wirklichen Passdurchlauf an nicht mehr 0 und 1 und dann wieder von vorne.
Für die IDE habe ich es jetzt so eingebaut das beim Erzeugen von Minimalexe (Releaseexe) jetzt automatisch der Debugger ausgeschaltet sowie Funcoptimizer und make_small angeschaltet wird, das erspart einem das ändern der Kompilereinstellungen. Die .dbg Datei wird erst beim letzten Compilerdurchlauf erzeugt.
Zitieren
#4
Das ist wirklich cool. Nochmal Danke!

Kann momentan leider nur nicht updated (Sourceforge Problem).

Beim CLI wäre ideal wenn das mit -debug und -release sich per default so einstellt. Denn eigentlich will man ja nur entweder debuggen oder releasen.
Zitieren
#5
So habe noch die Pass anzeige geändert so das sie jetzt mit 1 anstatt 0 anfängt Wink

Die Einstellung sind schon lange für -debug und -release im CLI-Modus vorhanden das einzigst was neu ist ist der Schaltet für Onepasscompiling den kann man aber einfach in den tooltypes bei AIDE hinzufügen.

JA das mit Sourceforge scheint doch etwas länger zu dauern, wenn du meine Änderung testen willst schick mir mal deine aktuelle EMail Adresse oder ist die alte noch gültig?
Zitieren
#6
So habe jetzt auch raus gefunden warum die erzeugten Exe im CLI-Modus mindestens 2048Bytes größer waren, habe das Problem behoben und noch ein falsche Zugriffsgröße für eine Statusvariable. Damit erzeugt der Compiler im CLI-Modus sowie mit PEd jetzt 100% identische Exe und sie enthalten auch nur Debug Code wenn nötig ;-)
Zitieren
#7
So Sourceforge funktioniert wieder ich habe meine Änderungen getrennt Commited das man per Diff auch sieht was ich jeweils geändert habe.

Noch eine kleine Warnung ich habe die ID von PEd geändert, das heißt PEd als auch der Compiler ab Revision 559 funktionieren jeweils nicht mit dem anderen von Revisionen vor 559!
Zitieren
#8
Seit dem Update compiliert es sehr langsam bei mir, und hat noch 2 passes. Muss ich irgendwelche parameter ändern?
Zitieren
#9
Hm langsamer sollte es nicht werden, bei mir ist es gleich geblieben ohne OnePassCompiling. Das einigste was bei mir noch bremmst ist das erstellen der .dbg Datei.

Für das aktivieren des OnePassConpiling muss für PEd die ToolType ONEPASSCOMPILING aktiviert werden beim CompilierIcon und für den CLI-Modus muss -1 oder -1pass als Parameter gesetzt werden beim Aufruf. Ich habe die Parameter bei AIDE noch nicht geändert daher verhält es sich wie bisher.
Zitieren
#10
das mit dem one pass compiling war schon immer so, wenn man kein make smallest nimmt, wird 1 pass genommen. nur wenn der exe puffer zu klein ist von den compiler options, dann muss der puffer vergrössert werden und nochmal kompiliert werden
Zitieren


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste