Damit ist doch "nur" die Kernel 2.6.x-Serie gemeint, oder? Für Kernel 2.4.x wird doch sogar gcc-2.95.3 empfohlen. Ich bin allerdings der Meinung, daß man wenigstens mit gcc-3.x (vielleicht ab Version 3.3.1) noch einige Zeit in die Lage versetzt sein sollte, einen aktuellen Kernel 2.6.x kompilieren zu können, auch und gerade für ältere Linux-Systeme.
Nur mal so nebenbei - hat es tatsächlich so große Auswirkungen auf die Leistung/Sicherheit/etc., ob jetzt mit GCC3 oder 4 kompiliert wird? Was bringt es überhaupt, zwei verschiedne Compiler zu unterstützen, wenn eine davon besser ist als die andere?
Was es bringt? Eine breitere Nutzerbasis, weil halt nicht alle den besseren Compiler einsetzen (können). Es gibt tatsächlich Leute, für die ist das Grund genug. Ts..ts...ts!
Gerade im Embedded Bereich kommt es schon mal auf Geschwindigkeit an. Auf einer normalen Desktop-CPU behaupte ich mal ganz blauäugig das man den Unterschied vielleicht nicht wirklich merken wird... Und da lohnt sich dann der Vergleich schon ob man mit GCC3 oder GCC4 besser fährt... Außerdem steht ja auch im Text das bestimmte Architekturen (dort als Beispiel ARM) noch nicht vollständig bzw. gut genug mit gcc4 kompilieren lassen. Aber das ist auch kein Problem welches den Kernel und Gcc alleine trifft. Man nehme nur zum Beispiel PHP4 und PHP5... obwohl sich auch alles mittlerweile auch mit besserer Geschwindigkeit in PHP5 entwickeln lässt... gibt es natürlich viele Skripte die noch für php4 geschrieben worden sind und unter php5 nicht laufen. Ich denke aber spätestens wenn ein neuer gcc compiler als stable (z.B. gcc5 falls die versionierung bei behalten wird) kommt... wird man es sich nicht mehr antun die gcc3 compiler versionen zu testen. Aber zwei Versionen muss man immer unterstützen aus Kompatibiltätsgründen.
Es gibt einige numerische Benchmarks auf AMD64, da liegt der 3.4.3 mit ca. 10% geringerer Laufzeit vorne, bei Anderen Bedingungen, kann der 4.x Compiler ca. 5% bessere Resultate bieten. Allgemein kann der 3.4.3 besser mit AMD64 umgehen, bei Pentium4 sind die Unterschiede geringer. Für ein SOHO system sicher kein Grund sich Gedanken zu machen, da ist es schlicht egal, denn ein Rechner verbringt auch viel Zeit damit seine Hardware zu bedienen, da liegt sicher ein wesentlich größeres Potential (Festplatte, Speicher ...)
Auf den gcc 4.0 trifft das in der Tat zu, er erzeugt meistens größeren und langsameren Code als der 3.4er. Beim 4.1er sieht es aber deutlich besser aus. IMHO ist er im Durchschnitt etwa gleichauf mit dem 3.4er, mal schneller, mal langsamer. Seit kurzem habe ich hier den 4.2.1 im Einsatz. Der erzeugte Code ist durch die Bank kleiner als beim 4.1.2, ob er auch schneller ist, habe ich noch nicht getestet. Allerdings hat er auch etliche Bugs mehr als der 4.1er.
Es scheint ja wirklich teilweise nen großen Unterschied zu machen, welchen Compiler man benutzt (auch wenn sich 10% jetzt vllt nicht so viel anhörn ist es doch eine ziemliche Steigerung wenn man bedenkt, dass es nicht mit dem zu compilierenden Programm zusammenhängt sondern nur mit dem Compiler :-O )
also bei i/o-lastigem zeugs liegt der Performancegewinn genau bei 0% egal welcher Compiler, überleg dir das auch mal. die 10% hat man lediglich bei Berechnungen und natürlich hat auch nur wenn die CPU überhaupt mal ganz ausgelastet ist. Bei mir Läuft die CPU nur recht selten auf 100%, d.h. ein suboptimaler Compiler hätte erstmal fast keine Auswirkung auf die Laufzeit sondern würde nur die CPU-Last erhöhen. => Nur guter Code bringt wirklich was. Der Unterschied zwischen gcc3 und gcc4 ist vor allem ein Problem für die Entwickler, wg. Warnings und Dingen die tlw auch gar nicht (mehr) übersetzt werden bzw. die nur mit 4 übersetzt werden.
- Bei mir Läuft die CPU nur recht selten auf 100%, d.h. ein suboptimaler Compiler hätte - erstmal fast keine Auswirkung auf die Laufzeit sondern würde nur die CPU-Last erhöhen.
Das stimmt so nicht unbedingt, es könnte auch die Load gleich bleiben und die Berechnungsdauer steigen (z.B. weil wegen RAM-Zugriffen gewartet werden muß) - oder beides...
Für Kernel 2.4.x wird doch sogar gcc-2.95.3 empfohlen.
Ich bin allerdings der Meinung, daß man wenigstens mit gcc-3.x (vielleicht ab Version 3.3.1) noch einige Zeit in die Lage versetzt sein sollte, einen aktuellen Kernel 2.6.x kompilieren zu können, auch und gerade für ältere Linux-Systeme.
Allgemein kann der 3.4.3 besser mit AMD64 umgehen, bei Pentium4 sind die Unterschiede geringer.
Für ein SOHO system sicher kein Grund sich Gedanken zu machen, da ist es schlicht egal, denn ein Rechner verbringt auch viel Zeit damit seine Hardware zu bedienen, da liegt sicher ein wesentlich größeres Potential (Festplatte, Speicher ...)
=> Nur guter Code bringt wirklich was.
Der Unterschied zwischen gcc3 und gcc4 ist vor allem ein Problem für die Entwickler, wg. Warnings und Dingen die tlw auch gar nicht (mehr) übersetzt werden bzw. die nur mit 4 übersetzt werden.
- erstmal fast keine Auswirkung auf die Laufzeit sondern würde nur die CPU-Last erhöhen.
Das stimmt so nicht unbedingt, es könnte auch die Load gleich bleiben und die Berechnungsdauer steigen (z.B. weil wegen RAM-Zugriffen gewartet werden muß) - oder beides...
lg
Erik