MoonGuy hat geschrieben:Der Visual Studio 2010 Compiler sagt mir, O1 minimiert die Größe der ausgegebenen Datei so gut es geht und O2 maximiert die Geschwindigkeit so gut es geht. O3 hat man gar nicht implementiert, dafür gibt es Ox, was beides vereinen soll. Bin mir aber nicht sicher, wie sehr man das auf g++ oder minGW Compiler übertragen kann/darf.
-O0 = keine Optimierungen, schnellerer Compile
-Os = möglichst kleines Binary, wie -O2 ohne Optimierungen, die die Größe erhöhen würden
-O/-O1 = weniger Codegröße, schnellere Ausführung: -fauto-inc-dec -fcprop-registers -fdce -fdefer-pop -fdelayed-branch -fdse -fguess-branch-probability -fif-conversion2 -fif-conversion -finline-small-functions -fipa-pure-const -fipa-reference -fmerge-constants -fsplit-wide-types -ftree-ccp -ftree-ch -ftree-copyrename -ftree-dce -ftree-dominator-opts -ftree-dse -ftree-fre -ftree-sra -ftree-ter -funit-at-a-time
-O2 = stärkeres Optimieren, aber kein loop unrolling oder function inlining; wie -O1, plus: -fthread-jumps -falign-functions -falign-jumps -falign-loops -falign-labels -fcaller-saves -fcrossjumping -fcse-follow-jumps -fcse-skip-blocks -fdelete-null-pointer-checks -fexpensive-optimizations -fgcse -fgcse-lm -foptimize-sibling-calls -fpeephole2 -fregmove -freorder-blocks -freorder-functions -frerun-cse-after-loop -fsched-interblock -fsched-spec -fschedule-insns -fschedule-insns2 -fstrict-aliasing -fstrict-overflow -ftree-pre -ftree-vrp
-O3 = wie -O2, plus: -finline-functions -funswitch-loops -fpredictive-commoning -fgcse-after-reload -ftree-vectorize
fat-lobyte hat geschrieben:Deswegen sollte man immer, wenn man -O3 verwendet auch -fno-inline mitgeben.
Warum? Dann kann man auch gleich -O2 nehmen..