rö
ich bins wieder meine jetzige frage: wie kann ich beim kompilieren von software (zb. mplayer etc.) optimieren? irgendwie geht es doch den prozessortyp anzugeben. kann jemand ma ein bsp. posten? danke
mfg
graka
ps. welche version von gcc würdet ihr momentan empfehlen?
gcc
- pdreker
- Beiträge: 8298
- Registriert: 29.07.2002 21:53:30
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Nürnberg
Unterhalb von gcc-3.2 würde ich keine zusätzlichen Optimierungen anwenden, weil die 1) nichts bringen und 2) Stabilität beeinflussen können.
Ab gcc-3.2 (auch schon vorher, aber die anderen 3.x Versionen sind nicht empfehlenswert) kann man dann etwas aufdrehen.
Dazu setzt man die CFLAGS Environment Variable mit den Optimierungs Optionen, die man gerne hätte.
Beispiel
Bei C++ Code muss man die Variable CXXFLAGS setzen, und zwar auf den gleichen Wert. Das Beispiel oben ist für einen Athlon Thunderbird, es gibt natürlich noch andere Architekturen (`i386', `i486', `i586', `i686', `pentium', `pentium-mmx', `pentiumpro', `pentium2', `pentium3', `pentium4', `k6', `k6-2', `k6-3', `athlon', `athlon-tbird', `athlon-4', `athlon-xp' and `athlon-mp')
Noch ein paar Tipps: Finger weg von optimierten Kerneln, das macht nur Ärger, wenn man nicht 101%ig weiss, was man macht. Auch essentielle Pakete (libc usw.) sollte man mit den default Optionen compilieren. Wo es sich lohnen kann sind solche Sachen wie mplayer, mencoder, transcode und die dazugehörigen Codec Libs z.B. Grundsätzlich solltest Du Dir nicht zuviel versprechen. 2 oder 3% schneller wird's im Durchschnitt werden. Ein komplett mit allen Libs durchoptimiertes transcode ist beim xvid encoden 8% schneller. Das ist aber auch der absolute Rekord den ich je geschafft habe....
Patrick
Ab gcc-3.2 (auch schon vorher, aber die anderen 3.x Versionen sind nicht empfehlenswert) kann man dann etwas aufdrehen.
Dazu setzt man die CFLAGS Environment Variable mit den Optimierungs Optionen, die man gerne hätte.
Beispiel
Code: Alles auswählen
# export CFLAGS="--march=athlon-tbird -O3 -pipe"
# make
Noch ein paar Tipps: Finger weg von optimierten Kerneln, das macht nur Ärger, wenn man nicht 101%ig weiss, was man macht. Auch essentielle Pakete (libc usw.) sollte man mit den default Optionen compilieren. Wo es sich lohnen kann sind solche Sachen wie mplayer, mencoder, transcode und die dazugehörigen Codec Libs z.B. Grundsätzlich solltest Du Dir nicht zuviel versprechen. 2 oder 3% schneller wird's im Durchschnitt werden. Ein komplett mit allen Libs durchoptimiertes transcode ist beim xvid encoden 8% schneller. Das ist aber auch der absolute Rekord den ich je geschafft habe....
Patrick
Definitely not a bot...
Jabber: pdreker@debianforum.de
Jabber: pdreker@debianforum.de
- pdreker
- Beiträge: 8298
- Registriert: 29.07.2002 21:53:30
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Nürnberg
Kommt drauf an ob Du einen P2 oder einen P3 Celeron hast...
Das -march Flag ist eine Sammeleinstellung, die sowohl Codegeneration, als auch Sachen wie Loop Construction und Spezialbefehle umfasst. Leider kann gcc (AFAIK) nicht so etwas wie SSE Loop Unrolling oder automatisches MMX oder 3dnow.
Wenn Du eine Intel CPU hast möchtest Du vielleicht 'mal den icc (Intel C Compiler) ausprobieren, der kann hammerhart SSE Optimierungen erzeugen und bringt in bestimmten Anwendungen Faktor 2 (sic!), ist allerdings noch etwas "roh", und kann nicht alles compilieren... Das kann also in Handarbeit ausarten...
Patrick
Das -march Flag ist eine Sammeleinstellung, die sowohl Codegeneration, als auch Sachen wie Loop Construction und Spezialbefehle umfasst. Leider kann gcc (AFAIK) nicht so etwas wie SSE Loop Unrolling oder automatisches MMX oder 3dnow.
Wenn Du eine Intel CPU hast möchtest Du vielleicht 'mal den icc (Intel C Compiler) ausprobieren, der kann hammerhart SSE Optimierungen erzeugen und bringt in bestimmten Anwendungen Faktor 2 (sic!), ist allerdings noch etwas "roh", und kann nicht alles compilieren... Das kann also in Handarbeit ausarten...
Patrick
Definitely not a bot...
Jabber: pdreker@debianforum.de
Jabber: pdreker@debianforum.de