• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Was gibt es Schöneres als den Mai draußen in der Natur mit allen Sinnen zu genießen? Lasst uns teilhaben an Euren Erlebnissen und macht mit beim Thema des Monats Da blüht uns was! ---> Klick

LLVM vs. normaler GCC - Was ist vorzuziehen?

naich

Pomme d'or
Registriert
22.11.08
Beiträge
3.082
Hallo,

Ich hatte in letzter Zeit das Gefühl, dass das Kompilieren von Programmen unter Mac OS tendentiell irgendwie immer länger gedauert hat als unter anderen Plattformen. Daher komme ich gerade zu folgendem Thema:

Soweit ich weiß, liefert Apple ja mit seinen Tools den LLVM Compiler mit aus.
Gerade frage ich mich, was denn da besser ist, llvm oder "normaler" gcc. Wikipedia erzählt mir, dass llvm quasi auch nen JIT-Compiler ist - was mich stark an (langsameres) Java erinnert, statt an eine Performance-Verbesserung.

Weiß da jemand genaueres darüber? Inwieweit ist der LLVM-Compiler besser und vorzuziehen? Oder sollte man doch lieber beim guten alten GCC bleiben?

Welcher der beiden kompiliert schneller?

Mich würde eure Meinung dazu interessieren.
 

ImperatoR

Roter Astrachan
Registriert
02.12.06
Beiträge
6.261
Also Clang (LLVM) kompiliert schneller als GCC und die Produkte sind eventuell durch bessere Optimierung seitens LLVM schneller. Jedoch welche Programmiersprache setzt du ein?

Man muss dazu sagen, dass GCC kompatibler und einfach kompletter ist, was wohl der Verbreitung und der jahrelangen Pflege zuzuschreiben ist.
 

naich

Pomme d'or
Registriert
22.11.08
Beiträge
3.082
Ich denke da im Moment vor allem an C und C++...
 

ImperatoR

Roter Astrachan
Registriert
02.12.06
Beiträge
6.261
Die neuste Version ist gerade erst voll kompatibel zum ISO C++ Standard 2003 geworden, aber ich hatte (zumindest mit der Vorgängerversion) Probleme mit einem Schablonenmechanismus im Zusammenspiel eines operator<<, habe es noch nicht ausprobiert, ob es jetzt mit der neuen Version klappt. Zu C99 ist er wohl schon länger voll kompatibel.

Clang ist ein erwachsener Compiler und eine ernst zu nehmende Konkurrenz zu GCC! Sind deine Fragen geklärt?

Ich hatte in letzter Zeit das Gefühl, dass das Kompilieren von Programmen unter Mac OS tendentiell irgendwie immer länger gedauert hat als unter anderen Plattformen.

Das hätte ich gerne nachgewiesen.
 

Pii

Rheinischer Krummstiel
Registriert
25.06.07
Beiträge
383
Wikipedia erzählt mir, dass llvm quasi auch nen JIT-Compiler ist - was mich stark an (langsameres) Java erinnert, statt an eine Performance-Verbesserung.
Da stimmt Deine Einschätzung einfach nicht. Und mit Java hat das echt nichts gemein.

P.S. Per Default bei Xcode die Settings für LLVM auf AoT gesetzt.

Weiß da jemand genaueres darüber? Inwieweit ist der LLVM-Compiler besser und vorzuziehen? Oder sollte man doch lieber beim guten alten GCC bleiben?
Apple verwendet LLVM. Ich verwende LLVM.
Probier es einfach aus, ob es für Dich passt.

Welcher der beiden kompiliert schneller?
LLVM

Inwieweit ist der LLVM-Compiler besser und vorzuziehen?
Benutze Google.

Oder sollte man doch lieber beim guten alten GCC bleiben?
Sollten irgendwelche Probleme auftreten, kannst Du einfach wieder den GCC verwenden.

P.S. Zumindest solange es noch geht.
 
Zuletzt bearbeitet:

Amin Negm-Awad

Süsser Pfaffenapfel
Registriert
01.03.07
Beiträge
665
a) Den Compiler, den du in Xcode verwendest, ist Clang und nicht LLVM.

b) Clang kann "Pseudocode" für den LLVM erzeugen, der dann JIT von LLVM in Maschinencode übersetzt wird.

c) Wie der Begriff JIT schon sagt, wirst du das beim Compilieren in Xcode gar nicht bemerken, weil der LLVM nicht in Xcode verwendet wird, sondern Clang. Würde er in Xcode verwendet, wäre es ja nicht mehr JIT.

d) Wieso interessiert dich eine Meinung zu einer Frage, wenn du bisher keine Probleme hattest?

Um die Frage abschließend zu beantworten, muss man mutmaßlich 234628374687 berücksichtigen. Ich verwende bisher gcc. Clang (LLVM) steht aber im Ruf, besseren Code zu erzeugen und vor allem bessere Fehlermeldungen zu liefern. (Was angesicht der Meldungen von gcc nicht schwierig sein dürfte.) Ob das stimmt, weiß ich nicht und wäre dann wohl auch eher nach eingehender Prüfung zu beantworten.
 

Pii

Rheinischer Krummstiel
Registriert
25.06.07
Beiträge
383
Die Xcode Settings nennen das clang-LLVM-Gespannt halt einfach nur "LLVM compiler".
Daher sagt halt jeder bloß noch LLVM, auch wenn natürlich clang-LLVM gemeint ist.

Edit: Weiss jetzt gerade nicht, ob die Bezeichnung in der Developer Preview geändert wurde.
 

Amin Negm-Awad

Süsser Pfaffenapfel
Registriert
01.03.07
Beiträge
665
Die Xcode Settings nennen das clang-LLVM-Gespannt halt einfach nur "LLVM compiler".
Daher sagt halt jeder bloß noch LLVM, auch wenn natürlich clang-LLVM gemeint ist.
Ja, das sollte einem aber nicht davon abhalten, es selbst richtig zu machen. Man sieht hier ja, wohin die ungenaue Bezeichnung führt.

Edit: Weiss jetzt gerade nicht, ob die Bezeichnung in der Developer Preview geändert wurde.

Gut wäre es …
 

ImperatoR

Roter Astrachan
Registriert
02.12.06
Beiträge
6.261
Es gibt die Wahl zwischen
  • GCC 4.2
  • LLVM GCC 4.2
  • LLVM compiler 2.0
in Xcode 4.0 Build 4A153.
 

Amin Negm-Awad

Süsser Pfaffenapfel
Registriert
01.03.07
Beiträge
665
Wobei der "LLVM GCC" meines Wissens nur ein gcc ist, der LLVM-Code erzeugen kann. Es bleibt also in der Sache ein gcc.