PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Speicherverbrauch: Neue Compiler-Versionen 'schlechter' ??



Ali_Baba
24.09.2008, 15:47
Hallo,

nach der Installation der neuen Version des gcc-Compiler (avr-gcc 4.3.0) stellte ich fest, dass im Vergleich mit meiner alten Version (4.1.2) der Speicherverbrauch für dasselbe Programm deutlich gestiegen ist:

Neu: 11218 bytes (68,5% Full) ___ -> Alt: 62,9% !!!!

Programmiert habe ich mit 'Programmer's Notepad (pn), im Makefile steht in beiden Fällen:


# Optimization level, can be [0, 1, 2, 3, s].
# 0 = turn off optimization. s = optimize for size.
# (Note: 3 is not always the best optimization level. See avr-libc FAQ.)
OPT = s


Wie das????


Gruß
Ali_Baba

sternst
24.09.2008, 17:44
Wie das????
Code-Optimierung ist eine diffizile Sache. Es ist nicht selten so, dass eine Veränderung eine Verbesserung in Umgebung A bringt, dafür aber eine Verschlechterung in Umgebung B. Und die Umgebung "Mikrocontroller" ist nicht gerade die, für die der GCC entwickelt und in der er getestet wird.

Du kannst mal folgende Options versuchen:
-fno-inline-small-functions
-fno-split-wide-types
-fno-tree-scev-cprop

PS: Und falls du die EEPROM-Block-Funktionen nutzt, geht ein Teil des Mehr-Codes zu Lasten der Tatsache, dass diese Funktionen anscheinend in der aktuellen AVR-Libc mit der Option -mcall-prologues übersetzt wurden.

Ali_Baba
25.09.2008, 16:38
Danke!

Dieser Eintrag in das Makefile:

CFLAGS += -fno-inline-small-functions

verkleinert das programm von 68,5% Full auf 62.0%

Die anderen beiden Einträge bewirken keine Verkleinerung des Hex-Codes.

... ich werde mich nun 'mal im Internet schlau machen, was diese Einträge eigentlich bewirken .... oder könnte mir dies hier 'mal kurz jemand beantworten?

Danke
Ali_Baba

SprinterSB
07.11.2008, 23:02
Zu den Optionen sollte GCC was erzählen via

avr-gcc -v --help

Das Thema Codegröße wird auch hier behandelt:

http://www.mikrocontroller.net/topic/100923