Login
Newsletter
Werbung

Thema: Vorschau auf GCC 4.0

40 Kommentar(e) || Alle anzeigen ||  RSS
Kommentare von Lesern spiegeln nicht unbedingt die Meinung der Redaktion wider.
0
Von M:ke am Di, 15. März 2005 um 17:15 #
Mehr braucht man dazu nicht sagen.
[
| Versenden | Drucken ]
0
Von rasna am Di, 15. März 2005 um 17:22 #
Tut sich da noch etwas:
http://gcc.gnu.org/c99status.html
[
| Versenden | Drucken ]
0
Von troll am Di, 15. März 2005 um 17:48 #
Wann führt denn dann RedHat den aktuellen Entwickjlungssnapshot als gcc4.0 ein?

SCNR
troll*an_red_hats_gcc-2.96/3.0-denkend*

[
| Versenden | Drucken ]
0
Von Node am Di, 15. März 2005 um 18:01 #
Weiß den jamnd wann so ca. mit der GCC in Version 4.0 zu rechnen ist?
Nächstes Jahr, dieses ....

Thx

[
| Versenden | Drucken ]
0
Von MaX am Di, 15. März 2005 um 21:33 #
"Optimaleren Code" schüttel, es gibt keine Steigerung von optimal!
[
| Versenden | Drucken ]
0
Von boris am Di, 15. März 2005 um 23:32 #
Habe mal einen Performancetest mit c++ gemacht: Wenn man alle Kompiliereinheiten separat übersetzt, also zum Schluss lauter .o Dateien verlinken muss, dann geht die Performance in den Keller, weil der Compiler nicht mehr inlinen kann - er müsste ja den binären Methodencode aus der Objektdatei extrahieren. Definiert man die Methoden direkt in der Klasse (vor allem bei getter und setter Methoden), dann erreicht man ein vielfaches an Performance, weil der Compiler tatsächlich inlinen kann und bei der Ausführung schließlich keine Funktionsaufrufe machen muss. In rechenintensive Algoithmen habe ich so die Laufzeit schon gedrittelt.

Hat jemand eine Ahnung, ob der neue gcc so etwas besser meistert? Gibt es überhaupt Compiler, die das können?

Grüße Boris

[
| Versenden | Drucken ]
  • 0
    Von hjb am Di, 15. März 2005 um 23:53 #
    Im Kernel geht man dem umgekehrten Weg: Funktionen, die früher inline waren, sind es jetzt nicht mehr, zumindest größere Funktionen. Dadurch wird der Kernel kleiner, es paßt mehr davon in den Prozessorcache und die Gesamtperformance steigt, weil etwas weniger Cachelines zu ersetzen sind.

    Andererseits ist klar, daß Inlining eine Menge Möglichkeiten für weitere Optimierungen bietet, daher dürfte bei Einzeilern Inlining fast immer sinnvoll sein.

    [
    | Versenden | Drucken ]
    0
    Von erich am Mi, 16. März 2005 um 00:37 #
    Sind inline-Funktionen nicht in der .h Datei, und dadurch schon in jeder einzelnen .o drin?
    [
    | Versenden | Drucken ]
    0
    Von frontier am Mi, 16. März 2005 um 08:41 #
    > Hat jemand eine Ahnung, ob der neue gcc so etwas besser meistert? Gibt es überhaupt Compiler, die das können?

    Ja der Intel-Compiler kann dieses.

    [
    | Versenden | Drucken ]
    0
    Von Christoph Bartoschek am Mi, 16. März 2005 um 10:14 #
    Es gibt schon Compiler, die das können.

    In der Linuxwelt existiert da zunächst Intels icc. Gibt man beim Kompilieren die Option -ipo an wird Intermediate Code erzeugt, der dann beim Linken optimiert wird. Erst danach wird Maschinencode erzeugt. IBM's xlc müsste das auch können. Den habe ich bisher aber nur auf AIX damit ausprobiert. Die werden das aber aus der PowerPC Version für Linux bestimmt nicht rausgenommen haben.

    Der GCC selbst kann das auf absehbare Zeit noch nicht, aber es gibt ein interessantes Projekt, dass sich jeder mal anschauen sollte. The LLVM Compiler Infrastructure basiert auf einem neueren GCC Frontend und kompiliert C/C++ Code in Bytecode, der dann in einer VM ausgeführt werden kann. Den Bytecode kann man jederzeit optimieren lassen: Beim Kompilieren, beim Linken, zur Laufzeit des Programms oder zwischen den Ausführungen unterstützt durch Ergebnisse eines Profilings. Der Bytecode kann jederzeit in echten Maschinencode kompiliert werden, so dass man keine Einbuße durch die VM hinnehmen muss. Ich habe jedoch in meinen Tests festgestellt, dass der Lauf in der VM nicht besonders viel Laufzeit kostet. Insgesamt konnte ich oft feststellen, dass das Ergebnis schneller war als das GCC-Kompilat.

    [
    | Versenden | Drucken ]
    0
    Von Kevin Krammer am Mi, 16. März 2005 um 19:05 #
    Darum verwenden auch einige größere Projekte eine Buildmodus, in dem zuerst alle .cpp Dateien zu einer zusammengefasst werden (zumindest verzeichnisweise) und dann kompiliert werden.
    Bei configure heißt diese Option unter anderem --enable-final
    [
    | Versenden | Drucken ]
0
Von kiwi am Di, 15. März 2005 um 23:44 #
Wie ist das denn dann mit der Kompatibilitaet. Wenn ich z.B. ein
Projekt habe und auf meine Homepage vorkompilierte RPM/DEB-Files
legen will, kann ich die mit gcc4 kompilieren und gehen die
dann auch unter SuSE9.0 / Debian 3.0?

Bislang muss ich dann alles nochmal auf der Distrie durch den
Compiler jagen,....

Kann da mal jemand etwas dazu sagen? Mache ich da immer was
falsch?

[
| Versenden | Drucken ]
  • 0
    Von puck am Do, 17. März 2005 um 08:12 #
    Also soweit ich das bis jetzt sehe, ist das ABI stabil geblieben zu Version 3. Das soll aber nicht heißen, dass es bei größeren Projekten nicht doch Probleme geben kann.
    [
    | Versenden | Drucken ]
    • 0
      Von kiwi am Fr, 18. März 2005 um 10:25 #
      Kann ich durch einen Parameter beim Compilieren die Version der ABI erzwingen?
      Ich meine, so flags wie
      GLIBCPP_3.2 ...
      oder
      GLIBCPP_3.2
      CXXABI_1.2
      ...

      Danke fuer eine Info

      [
      | Versenden | Drucken ]
0
Von Mar am Mi, 16. März 2005 um 10:53 #
Kann man nicht so pauschal sagen......
Ja klar ;-) Aber was kann sich der Laie darunter vorstellen?

Wird das gesamte Linuxsystem schneller laufen (und wie viel schneller?)?
Werden einfache Anwendungen (100000 mal Hello World) davon profieren?
Laufen Microcontroller schneller (interessiert mich besonders!)?

Schon mal danke für Eure Antworten

Mark

[
| Versenden | Drucken ]
  • 0
    Von NikN am Mi, 16. März 2005 um 19:23 #
    Ich bin zwar auch kein Experte, kann dir aber schon mal sagen, dass ein "hello world"-Programm dadurch nichts schneller wird. Was aber ein Compiler optimiert, lässt sich auch immer in Trivialbeispielen festhalten, die dann keine sonderlich großen Programme sind. So z.B. das entrollen von Schleifen (-funroll-loops) als ganz primitives Beispiel. Ob jetzt ein bestimmtes Optimierungsverfahren etwas bringt, hängt dann immer vom Programm und den darin verwendeten Algorithmen zusammen. So pauschal kann man das also nicht sagen. Vielleicht schreibt aber schon jemand mit mehr Ahnung noch etwas dazu.

    NikN

    [
    | Versenden | Drucken ]
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung