Hallo zusammen, gestern abend (spät) viel mir auf, dass sich die Outputgrößen irgendwie nicht so verhalten wie ich es erwartet hätte, nämlich so: - Ohne Optimierung: Output: 7,05kB - mit -O/-O1 : 7,15kB - mit -O2 : 7,64kB - mit -O3: 7,75kB - mit -Os: 7,63kB Was ich nicht verstehe, ist, dass -Os so einen großen Output liefert, gerade im Vergleich zum nicht auf Größe optimierten Code. Zum Anderen frag ich mich natürlich, schreib ich so miesen Code, dass er sich nicht optimieren lässt, oder mach ich was beim Kompilieren falsch? Als Optionen hab ich nur das Target, -Wall und eine Optimierungsstufe. Und im Debug-Modus noch -g (erzeugt Debugger Symbole). Grüße Tobi
Gerade gemerkt, dass ich im Debug-Modus kompiliert habe. Im Releasemodus ändern sich aber nur die Zahlen um rund 3kB und die Reihenfolge der Outputgrößen wäre dann -O/O1 (4,11kB) -O2 (4,15kB) -Os (4,16kB) -O3 (4,22kB) -ohne (4,37kB) Immerhin ist der unoptimierte Output jetzt der Größte. Aber ich versteh immer noch nicht, warum die Größenoptimierung größeren Output erzeugt als die Geschwindigkeitsoptimierung. Das läuft doch dem Ziel zu wieder und macht -Os doch eigentlich (zumindest in dem Fall hier) überflüssig.
Versuch mal zusätzlich: -fno-inline-small-functions Peter
Danke schön für den Tipp, jetzt mach die Option -Os auch Sinn, in menem Verständnis.
Peter Dannegger schrieb: > Versuch mal zusätzlich: > > -fno-inline-small-functions hmmm, ich dachte das wäre längst in gcc? Sind nur ein paar Zeilen das. FYI:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
27 | |
28 | |
29 | |
30 | |
31 | |
32 | |
33 | |
34 | |
35 | |
36 | |
37 | |
38 | |
39 | |
40 | |
41 | |
42 | |
43 | |
44 | |
45 | |
46 | |
47 | |
48 | |
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.