Hi, hat jemand eine Liste aller(!) AVR-GCC-Optimierungsparameter irgendwo parat? Ich bastele an einem Tool, welches die Parameter automatisiert durchprobiert, um ein möglichst kleines Binary zu erstellen. In der Doku https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html fehlen leider mindestens mal -morder2 und -mcall-prologues. Wahrscheinlich noch deutlich mehr.
Wenn es auch nur 50 Optionen wären (es sind mehr), gibt es ca. 10^15 Kombinationen. Wenn man optimistisch mit 1x kompilieren = 1 sek rechnet, dauert das Durchprobieren ca. 35 Mio. Jahre. Bis dahin gibt es Controller, die schnell & groß genug sind um ordinär mit -O2 optimierten Code auszuführen. Halt, die gibt's sogar jetzt schon (ARM)...
Meistens ist es leichter einfach den nächst größeren Controller zu wenden als um auf Teufelkommraus zu optimieren.
Keiner sprach davon, alle Kombinationen durchzuprobieren! Für jede einen Compiliervorgang. Dann alle, die eine Verbesserung brachten, kombinieren. Dann ggf. noch einen Durchlauf oder zwei. Hat mir schon einiges gebracht. Bei Dingern wie -funsafe-math-optimizations muss man natürlich ein bisschen aufpassen.
Den Controller bei allen Kunden aus- und einen neuen einzulöten ist nicht immer wirtschaftlich.
Wenn das tool vom to jetzt nicht alle drölftausend kombis ausprobiert sondern eher was in Richtung Baumsuche macht, dann wird die Zeit ganz schnell kleiner (und 1 Sekunde ist ganz schön pessimistisch für ein winziges AVR-hex das auf einem flotten & modernen PC gebaut wird. Ob es natürlich die erhoffte Verbesserung bringt wage ich stark zu bezweifeln. Der GCC ist selbst mit den standard-optionen ( -Os )schon ziemlich gut. da kriegt man nurnoch ein paar Prozente mehr weg von dem executable. Spätestens wenn dann el-cheffe kommt und noch irgendeinen firlefanz will ist schluss. Ausserdem ist bei den AVRs der Platz doch spottbillig. Wenn du nicht grade die ganze Weltbevölkerung ausstatten willst, dann ist deine Arbeitszeit ein paar Größenordnungen teurer als das Upgrade.
wilson schrieb: > Hi, > > hat jemand eine Liste aller(!) AVR-GCC-Optimierungsparameter irgendwo > parat? Ich bastele an einem Tool, welches die Parameter automatisiert > durchprobiert, um ein möglichst kleines Binary zu erstellen. > > In der Doku > https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html > fehlen leider mindestens mal -morder2 und -mcall-prologues. > Wahrscheinlich noch deutlich mehr. Das sind nur die Optionen, die für alle Targets verfügbar sind. Die avr-spezifischen: http://gcc.gnu.org/onlinedocs/gcc/AVR-Options.html -morder und einige andere sind da nicht dabei da undokumentiert, also auch mit --help=target. Da hilf dann eine Blick in die Quelle: http://gcc.gnu.org/viewcvs/gcc/trunk/gcc/config/avr/avr.opt?content-type=text%2Fplain&view=co -funsigned-char, -funsigned-bitfields und -fshort-enums etc. sind übrigens keine Optimierungsoptionen denn sie ändern die Semantik des Programms!
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.