Die Verwendung von GCC 4.2 zum Kompilieren von * .mm-Dateien ist sehr langsam, aber LLVM hat sehr gute Arbeit geleistet.

  • Mein Projekt ist obj-c und C ++ hybirid, gefüllt mit * .m und * .mm.

    Wenn Sie beim Kompilieren GCC 4.2 wählen, ist die Kompilierungsgeschwindigkeit von * .m obj-c-Quelldateien sehr schnell, aber * .mm ist sehr langsam, aber LLVM 2.0 kann sehr gut sein Job, es ist sehr schnell für * .m und * .mm.

    Meine Frage: Gibt es einen Unterschied zwischen LLVM und GCC 4.2 während der Fertigstellung von * .mm-Dateien? warum ist GCC 3.2 so langsam?

    Jede ieda oder Diskussion wird dankbar sein.

    ENV: XCODE 4.0.1

    22 November 2011
    jianhua
3 answers
  • Gibt es einen Unterschied zwischen LLVM und GCC 4.2 während der Fertigstellung von * .mm-Dateien? Warum ist GCC 3.2 so langsam?

    Ja; Sie sind völlig verschiedene Compiler. Im Wesentlichen ist alles an dem Prozess anders, auch wenn der tatsächliche Effekt ähnlich ist (Sie erhalten eine ausführbare Datei, die die Semantik Ihres Quellcodes getreu wiedergibt). Eines der Hauptziele von LLVM war die Verbesserung der Kompilierungsgeschwindigkeit. Dies wird erwartet.

    Wenn Sie etwas über die Interna von LLVM erfahren möchten, Hier ist ein vernünftiger Startplatz.

    22 November 2011
    Stephen Canon
  • LLVM ist ein viel neuerer Compiler, der in den letzten 5 Jahren entwickelt und geschrieben wurde, während die gnu Compiler Collection (gcc) älter als 20 Jahre ist und sehr aufgebläht ist, aber viele Sprachen beherrscht. In sehr seltenen Fällen ist die gcc-Optimierung besser, aber im Allgemeinen sollten Sie einfach LLVM verwenden.

    22 November 2011
    FeeJai
  • Der GCC ist zwar alt, macht aber immer noch Fortschritte. Ich empfehle Ihnen, die neuesten Versionen zu vergleichen. Verwenden Sie daher GCC 4.6 (im Vergleich zu LLVM 2.9 ). Ihre 4.2 -Version des GCC ist mehrere Jahre alt, und seitens des GCC wurden seitdem viele Fortschritte erzielt.

    22 November 2011
    Basile Starynkevitch