CPU Optimierung?

free said:
CPU-Optimierungen machen im schlimmsten Fall nichts, im besten für eine Funktion, die vorher 5 Befehle gebraucht hat nun einen eigenen Befehl -> Der Code wird kleiner und meistens auch schneller!!
GRÖSSER wird er nur, wenn man die (ohnehin bösen) -O2, -O3 Schalter benutzt, da er hier z.B. Schleifen in normalen Code umwandelt, der dann 20x untereinander steht, um die Sprünge/Vergleiche zu sparen.
Ich stimme dabei dir zu, dass die meisten CPU-Optimierungen den Code nicht vergrößern, allerdings stimmt es nicht, dass bei -O2 und -O3 die Umwandlung von Schleifen in Code für die Aufblähung verantwortlich sind. Das "unroll-loops" wird nicht automatisch durchgeführt. Vielmehr ist "reorder-blocks" dafür zum großen Teil verantwortlich. Zur Veranschaulichung habe ich mal gzip mit verschiedenen Schalterkombinationen kompiliert:

Code:
70689 Bytes  -O0
63847 Bytes  -O1
63029 Bytes  -O2
60437 Bytes  -O2 -fno-reorder-blocks
69575 Bytes  -O3
66055 Bytes  -O3 -fno-reorder-blocks
97351 Bytes  -O3 -funroll-loops
57611 Bytes  -Os

Björn
 
Back
Top