Optimierungsflags Gentoo
-
Hi,
hab ein Laptop mit Transmeta Crusoe TM5600 CPU. Habe Gentoo installiert und die Optimierungsflags nicht definiert.
Was das richtig oder sollte ich doch welche setzen??
Welche Flag sind denn für meine CPU optimal??mfg
white.rabbit
-
<a href= schrieb:
http://forums.gentoo.org/viewtopic.php?t=53602">
elif [ "$cpu_family" == "6" ]; then if echo "$flags" | grep -vq cmov; then #gcc incorrectly assumes i686 always has cmov _CFLAGS="$_CFLAGS -march=pentium -mcpu=pentiumpro" #VIA CPUs exhibit this else if [ "$cpu_model" == "0" ] || [ "$cpu_model" == "1" ]; then _CFLAGS="$_CFLAGS -march=pentiumpro" [b]elif [ "$cpu_model" -ge "3" ] && [ "$cpu_model" -le "6" ]; then #4=TM5600 at least[/b] _CFLAGS="$_CFLAGS -march=pentium2" elif [ "$cpu_model" -ge "7" ] && [ "$cpu_model" -le "11" ]; then #9 invalid _CFLAGS="$_CFLAGS -march=pentium3" fi fi
-
Hi,
hab ausprobiert und er meint ich soll "-march=pentium2" benutzen. Ich habe aber mit "-O2 -mcpu=i386 -fomit-frame-ppinter" alles kompl.
Jetzt eine Frage:
Wirken jetzt die falschen Flags auf mein System negativ aus, wenn ja in wie fern????Soll ich alles von nachmal machen oder soll ich es lassen?
mfg
white.rabbit
-
white.rabbit schrieb:
Wirken jetzt die falschen Flags auf mein System negativ aus, wenn ja in wie fern????
Soll ich alles von nachmal machen oder soll ich es lassen?
Naja, die Performance der Sachen ist nicht optimal, aber sonst sollten Deine alten CFLAGS schon passen. Richtig blöd wirds nur wenn Du -march= falsch setzt, dann kannst Du uU die so kompilierten Programme nicht mehr ausführen.
-
Hi,
mir ist grade aufgefallen, dass ich mich verschrieben habe. Es sollte eigentlich"-O2 -mcpu=i686 -fomit-frame-pointer" sein.
Soll ich bei der nächsten Installtion einfach i686 durch pentium2 erstetzen oder muss der Rest "-fomit-frame-pointer" auch weg?
mfg
white.rabbit
-
Nein, das -fomit-frame-pointer würde ich auf alle Fälle lassen.
Und kompiliere am besten mit -march=pentium2 wenns funktioniert, das wäre besser.
-
Hi,
wäre die Einstellung ganz ok?:
CHOST="i686-pc-linux-gnu"
CFLAGS="-march=pentium2 -O3 -pipe -fomit-frame-pointer"
CXXFLAGS="-march=pentium2 -O3 -pipe -fomit-frame-pointer"Was hat -O3 zubedeuten? Und wo ist der Unterschied zu -O2?
Die Einstellung habe ich aus http://www.freehackers.org/gentoo/gccflags/flag_gcc3.html.
mfg
white.rabbit
-
-O = Optimierungsgrad: 3 ist halt stärker als 2 als 1
-
white.rabbit schrieb:
Hi,
wäre die Einstellung ganz ok?:
CHOST="i686-pc-linux-gnu"
CFLAGS="-march=pentium2 -O3 -pipe -fomit-frame-pointer"
CXXFLAGS="-march=pentium2 -O3 -pipe -fomit-frame-pointer"Ja, das wäre ganz vernünftig.
Häng noch -w an und das ganze ist richtig brauchbar.
-
Hi,
wozu -w???
-
white.rabbit schrieb:
wozu -w???
`-w'
Inhibit all warning messages.
-
Also meine meinung...-w wuerde ich nicht reinnehmen,warnungen stoeren erstmal keinen bis auf den terminal emulator,der sie ausgeben muss,aber man kann mitunter doch schneller sehen warum ein programm vll nicht funktioniert. -fomit-frame-pointer wuerde ich auch weglassen,ok dann ist zwar die ausfuehrung etwas langsamer (programme die stark rekursion und viele aufrufe in zeitkritischen szenarien nutzen setzen das flag eh selber), aber debugging wird ohne frame pointer quasi unmoeglich. -O2 -O3 ist auch so ne sache,gcc haut bei -O3 manchmal falschen code raus,also in systemen wos auf stabilitaet ankommt reicht -O2. Allerdings wuerde ich noch -pipe hinzufuegen,da werden keine tempfiles sondern pipes genutzt um zwischen den einzelenen programmen zu kommunizieren -> schneller.
PS: rechnet gcc nicht zuviel optimierfaehigkeit zu, wers schnell haben will auf x86 setzt ein gentoo auf icc auf
-
thomas001 schrieb:
Also meine meinung...-w wuerde ich nicht reinnehmen,warnungen stoeren erstmal keinen bis auf den terminal emulator,der sie ausgeben muss,aber man kann mitunter doch schneller sehen warum ein programm vll nicht funktioniert.
Nein, Warnungen sind bei den meisten Programmen Schall und Rauch; wenn irgendwas nicht kompiliert kann man immer noch die CFLAGS ändern und sich das ganze anschaun. Leute die mit -Wall oä kompilieren tun das meist in erster Linie weil sie glauben zugemüllte grün-schwarze xterms im Hintergrund seien besonders 1337.
-fomit-frame-pointer wuerde ich auch weglassen,ok dann ist zwar die ausfuehrung etwas langsamer (programme die stark rekursion und viele aufrufe in zeitkritischen szenarien nutzen setzen das flag eh selber), aber debugging wird ohne frame pointer quasi unmoeglich.
Kompilierst Du auch alle Deine Programme mit -g?
stable-Programme haben gefälligst nicht noch Debugging nötig zu haben und wenn irgendwas doch Probleme macht, dann kompiliert man das ohne -fomit-frame-pointer und mit -g und mit -DDEBUG, aber normalerweise ist -fomit-frame-pointer auf alle Fälle eine gute Idee.-O2 -O3 ist auch so ne sache,gcc haut bei -O3 manchmal falschen code raus,also in systemen wos auf stabilitaet ankommt reicht -O2.
Wenn -O3 zuviel ist, dann kompilieren kritische Programme idR einfach nicht.
Allerdings wuerde ich noch -pipe hinzufuegen,da werden keine tempfiles sondern pipes genutzt um zwischen den einzelenen programmen zu kommunizieren -> schneller.
-pipe hat er schon drin, siehe Seite 1.
PS: rechnet gcc nicht zuviel optimierfaehigkeit zu, wers schnell haben will auf x86 setzt ein gentoo auf icc auf
GCC optimiert mittlerweile _verdammt_ gut und GNU/ Linux mit ICC ist meist eine Qual und die Programme nur selten wirklich merklich schneller als welche die mit der GCC erstellt wurden.