Welche g++ Schlüssel passen zu meiner Machine?
-
Ich benutze gerade:
# compile options CXXFLAGS := -ansi -std='c++98' -pedantic -Wall -Weffc++ -Wold-style-cast \ -Wextra -Wunknown-pragmas -Wshadow -Wwrite-strings -Wconversion \ -Wunreachable-code -Winline -Wdisabled-optimization -O3 -march=prescott \ -mfpmath=sse -mmmx -msse -msse2 -msse3 # link options LDFLAGS := -s
Meine Maschine ist Intel Pentium Dual Core T2310.
-
Es heißt Optionen.
Also , alles was in der Form -WXXXXX ist, gibt an, dass bei XXXXXXX eine Warnung ausgegeben werden soll.
-O3 ist die höchste Optimierungsstufe, die -OX sind aber praktisch nur eine Zusammenfassung verschiedener -fXXXX.
Die -msseX gibt an, welches SSE dein Prozessor unterstützt.
-march=XXX gibt ähnlich wie -msseX an, welche neueren Befehle verwendeet werden dürfen (=schneller), musst aber schauen welchen Prozessor du hast, Prescott ist glaube ich ein P4.
-mfpmath=XXX kenne ich so nicht, es gibt aber wahrscheinlich an, dass Fließkommaarithmetik mittels SSE erledigt werden soll/darf/muss.Für manche Dinge (z.B. Kernel) sollte man aber z.B. höchstens -O2 verwenden.
Was willst du denn damit kompilieren?
-
Dieser Thread wurde von Moderator/in rüdiger aus dem Forum Linux/Unix in das Forum Compiler- und IDE-Forum verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
welche gcc-Version und was soll compiliert werden?
-
-
4.1.3
Es sollen Programme für arithmetische Ausdrücke der Mathematik kompiliert werden. Wichtiger ist die Schnelligkeit.
-
Ja was für einen Prozessor hast du denn?
-
Sososo schrieb:
Ja was für einen Prozessor hast du denn?
Das habe ich schon geschrieben.
-
Laut Wikipedia ist das ein Merom-2M kern - dann müsste -march=nocona die beste Einstellung für gcc-4.1 sein. Ab gcc-4.2 gibt es march=native, damit erübrigt sich die Sucherei, wenn das Ganze nur auf derselben Maschine laufen soll, ein eigener Scheduler für den core2 wird es aber erst mit gcc-4.3 geben.
-fomit-frame-pointer ist empfehlenswert, Optimierungseinstellungen "im Prinzip" so hoch wie möglich, allerdings führen einige Einstellungen je nach Source zu einer Verschlechterung. Da hilft nur ausprobieren.
Für den Anfang ist sicher gut:
CXXFLAGS="-O3 -march=nocona -fomit-frame-pointer"
sonstige Flags, die nicht die Optimierung betreffen, nach Belieben..
CXXFLAGS="${CXXFLAGS} -ansi -std='c++98' -pedantic -Wall -Weffc++ -Wold-style-cast -Wextra -Wunknown-pragmas -Wshadow -Wwrite-strings -Wconversion -Wunreachable-code -Winline"