Teilweise optimieren via #pragma oder _attribute_

#6911053
Lesenswert?

Hallo zusammen,
hätte noch eine Frage zum Optimizer unter Atmel Studio 7 GCC 5.4.0
Ich möchte nur einige ISR Funktionen wie SPI bzgl. der 
Durchlaufgeschwindigkeit optimieren, den Rest des Codes für das 
Debugging aber nicht.
Es gibt wohl:
#pragma GCC push_options
#pragma GCC optimize (3)

ISR (SPI_STC_vect)
…
#pragma GCC reset_options //stellt die standard. Einstellungen wieder 
her
#pragma GCC pop_options

ODER

__attribute__((optimize("O3"))) ISR (SPI_STC_vect) ..

1 Frage: Beide sollte doch das gleiche Ergebnis liefern oder?
2 Frage: Push und pop bei #pragma kann man, wenn der Optimizer global 
aus ist, sich doch schenken oder?
3 Frage: Muss man hier sonst noch etwas berücksichtigen, was ich nicht 
auf dem Schirm habe?

Vielen Dank.
Andreas
Gast #6915071
Lesenswert?

> __attribute__((optimize("O3"))) ISR (SPI_STC_vect) ..

Das funktioniert im GCC nicht zuverlässig - hit&miss. Der Code dafür ist 
weder maintained noch war er jemals bugfrei.

Ich empfehle, Code, der gesondert optimiert werden soll in eine 
Extra-Datei auszulagern und für die Datei die Compiler-Parameter 
entsprechend deinen wünschen anzupassen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren