PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Langsamer gcc 3.2 ?



michal
12-02-2003, 07:56
Hallo zusammen!

Ich habe vor einingen Wochen KDE 3.0.99 übersetzt. Das lief einige Tage!!!
Habt Ihr auch den Eindruck, das der gcc 3.2 eine ziemliche Schnecke ist?
Gibt es da Abhilfe?

Gruß Micha:cool:

SuSE 8.1, Qt 3.1.1, KDE 3.1

SeeksTheMoon
12-02-2003, 09:22
hast Du mit Prozessor-Optimierung kompiliert?

michal
12-02-2003, 09:46
Darum habe ich mich nicht gekümmert.

Was ich weiß ist, dass gcc auf -O hört, um zu optimieren.

Kann das dem configure mitgegeben werden?

Beste Grüße
Micha

:cool:

SeeksTheMoon
12-02-2003, 10:19
nun, -O ist längst nicht alles, denn Du kannst dem Compiler sagen, dass er die ausführbaren Dateien an eine bestimmte CPU anpassen soll, z.B. kannst Du Programme direkt für Athlon-XP oder Pentium 2 optimieren.

Am einfachsten geht es, wenn Du die Parameter in Umgebungsvariablen speicherst (besonders in CFLAGS für C und CXXFLAGS für C++ Programme), z.B. so:

export CFLAGS="-O3 -march=i686" && CXXFLAGS=$CFLAGS

und dann configure und make machst. configure stellt i.d.R selber die Architektur fest, aber sicherer ist es, wenn man die Umgebungsvariablen anwendet.

Wie Du siehst, gibt es auch für -O noch mehrere Stufen, wobei 2 die sicherste sein dürfte. Wenn man Performance-Junkie ist, kann man das bis -O3 oder -O4 rauftreiben. (Vielleicht sogar noch höher? Ich weiß nicht genau).

-march gibt die Prozessor-Architektur an; Standard ist i386. Welche Architekturen zur Verfügung stehen, steht in der Manpage von gcc.
i686, athlon, athlon-xp gibt es im gcc 3.2

Den Parameter -mcpu gabs glaub ich auch noch, aber inwiefern er sich von -march unterscheidet, weiß ich nicht genau.

zusätzlich gibt es noch Optionen, die Schleifen "auspacken" und zu Sequenzen umwandeln, wodurch der Code größer wird, aber die Performance steigt usw.....

Schau am besten mal in die manpage vom gcc.

michal
12-02-2003, 12:45
Danke für die Erläuterungen.
Beim nächsten größeren Vorhaben werde ich das berücksichtigen und mal mit den Einstellungen experimentieren.

Vielen Dank
Micha :cool:

peschmae
12-02-2003, 14:46
zu gcc-3.2 ist noch anzumerken, dass allgemein gilt, dass der etwa 20% schneller ist als die der 2.9er Serie...
aber womit hast du denn verglichen ?

MfG Peschmä

arthur
12-02-2003, 18:02
ich glaube ihr redet aneinander vorbei,
michael hat sich beschwert dass der gcc 3.2 langsam compiliert
und nicht dass der compilierte code langsam läuft.
da ist der tip mit der -Ox optimierung eher schlecht denn
damit verlängert sich das bauen noch mehr.

SeeksTheMoon
12-02-2003, 19:05
dann dürfte es eher auf die Hardware zurückzuführen sein - oder der gcc selber wurde ohne Optimierungen kompiliert. (Aber wenn ich das Handbuch von LFS noch richtig im Kopf habem wird der gcc auch böse wenn man den tunen will)

Schonmal den icc ausprobiert? Das ist der C/C++ Compiler von Intel. Ich weiß nicht, ob der schneller kompiliert, aber das was dort rauskommt soll ja erheblich schneller sein, als die binaries, die der gcc macht....

arthur
12-02-2003, 20:10
es kann sein dass der intel compiler etwas schnelleren code produziert
aber sehr wahrscheinlich auch nur auf intel rechnern, wodurch es eigentlich
nicht wirklich was bringt, ausserdem kann ich mich bei gcc über die geschwindigkeit
nicht beklagen.

SeeksTheMoon
12-02-2003, 20:42
nun, der Compiler hat auf AMD Prozessoren sogar schnelleren Code als auf Pentiums produziert. Im Vergleich mit dem gcc waren die Binaries um 30% schneller...

arthur
12-02-2003, 21:31
echt? wusste ich nicht, ich benutzte fast nur gcc, werde es aber mal
ausprobieren und vergleichen.
es bleibt aber immer noch ein hacken, soweit ich es gesehen habe ist
der intel compiler im gegensatz zu gcc nicht umsonst ;)

michal
13-02-2003, 06:57
Guten Morgen an alle!

Den Intel-Compiler habe ich bereits in der Personal-Edition. Die ist kostenlos für private Zwecke. Ich hab' aber keine Ahnung, wie ich den statt GCC verwende. Hat da jemand ein Strickmuster, welche Umgebungsvariablen etc. (Ich habe es bereits versucht, ohne Erfolg).
Übrigens meine Geschwindigkeitsprobleme sind während des compilierens aufgetreten auf Intel PIII-Mobile-1133MHz/256MB RAM (Mein "Notizbuch" ;) ). Und hier läuft der M$-Compiler beinahe um das Doppelte schneller.