Hi, TI's ARM-Compiler kennt ein pragma, mit dem man die Optimierung lokal für eine Funktion ändern kann: #pragma FUNCTION_OPTIONS(interface_loop,"--opt_level=4 --opt_for_speed=5") So kann man beispielsweise den gesamten Code auf Größe optimieren lassen und nur bestimmte, kritische Codeteile auf Geschwindigkeit. Meine Frage: gibt es sowas auch für den AVR-gcc?
Soweit mir bekannt, kann der das nicht. Leider! Ich hab dann immer die Zeitkritischen Prozesse in inline-Asm geschrieben. Wir eh nicht selten nochmal etwas schneller...
Leo B. schrieb: > Soweit mir bekannt, kann der das nicht. Leider! https://gcc.gnu.org/onlinedocs/gcc/Function-Specific-Option-Pragmas.html und unter "optimize": https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html#Common-Function-Attributes
A. K. schrieb: > https://gcc.gnu.org/onlinedocs/gcc/Function-Specific-Option-Pragmas.html > und unter "optimize": > https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html#Common-Function-Attributes Die Beschreibung finde ich nicht wirklich verständlich...wie würde das dann aussehen? #pragma GCC optimize ("-Ofast") Und wo definiere ich die Funktion, für die das gilt?
Squeezer schrieb: > Und wo definiere ich die Funktion, für die das gilt? Gilt ab da. Aber wenn du das auf eine Funktion beziehen willst, dann nimm lieber das Attribut.
Ich glaube, der AVR-gcc kennt so ein Attribut nicht: https://gcc.gnu.org/onlinedocs/gcc/AVR-Function-Attributes.html#AVR-Function-Attributes
vielleicht so? __attribute__((optimize("-O3"))) void foo(void);
Squeezer schrieb: > und nur bestimmte, kritische Codeteile auf Geschwindigkeit. Bei anderem Level statt -Os habe ich kaum Geschwindigkeitsvorteile festgestellt, eher das Gegenteil. Beim Loop aufrollen sind das oft nur die 2 Zyklen für den RJMP, dafür explodiert der Code.
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.