Link-Time-Optimization: LLVM macht LTO fast so schnell wie normale Optimierung

Mit einer neuen Art der Optimierung während des Linkens eines Programms (LTO) benötigt LLVM nur etwas mehr Zeit als bei der "normalen" Optimierung beim Kompilieren. Auch den Speicherbedarf für LTO konnte das Team drastisch reduzieren.

Artikel veröffentlicht am ,
Dank einer neuen Technik wird die LTO in LLVM deutlich schneller.
Dank einer neuen Technik wird die LTO in LLVM deutlich schneller. (Bild: LLVM)

Die meisten Compiler verfügen inzwischen über Möglichkeiten der Programmoptimierung, etwa um die Laufzeit zu verbessern. Bei der Link-Time-Optimization (LTO) wird dieser Vorgang erst beim Linken des Programms durchgeführt, wodurch das gesamte Programm auch über mehrere Module hinweg optimiert werden kann. Mit dem neuen Ansatz Thin LTO hat es das LLVM-Team geschafft, den für den Vorgang benötigten Speicherbedarf drastisch zu reduzieren und nur noch etwas mehr Zeit als für die normale Optimierung zu benötigen.

  • Der Ablauf des neuen Thin LTO (Bild: LLVM)
  • Der Ablauf des alten LTO (Bild: LLVM)
Der Ablauf des neuen Thin LTO (Bild: LLVM)
Stellenmarkt
  1. Berater Krankenhausinformationssystem (KIS) Neueinführungen (m/w/d)
    Helios IT Service GmbH, Berlin-Buch, deutschlandweit
  2. Facility Technology Solution Lead (m/f/x)
    Autodoc AG, Berlin, Szczecin (Polen), Cheb (Tschechische Republik)
Detailsuche

Trotz der durch LTO meist besseren Ergebnisse im Vergleich zur normalen Optimierung hatte die Technik vor allem für sehr große Anwendungen entscheidende Nachteile. Denn bei dem bisherigen Ansatz ist der gesamte erzeugte Bitcode zu einem großen monolithischen Modul zusammengefasst worden, auf dem dann die Optimierungen in einem einzigen Thread durchgeführt worden sind.

Paralleler Ablauf dank Zusatzinformationen

Bei Thin LTO wird jedoch auf das Zusammenführen des Bitcodes zu dem monolithischen Modul vollständig verzichtet. Um dennoch eine globale Analyse des gesamten Programms durchführen zu können, werden kompakte Übersichten der einzelnen kleineren Module erstellt. Ebenso wird ein Index der Orte von Funktionen erstellt, um diese später über Modulgrenzen hinweg importieren zu können. Dieser Import umfasst zudem nur jene Funktionen, die wahrscheinlich von einer Inline-Ersetzung betroffen sein werden. Die tatsächlichen Optimierungen geschehen dann völlig parallel in mehreren Threads.

Die wichtigste Voraussetzung für diesen Ablauf sei das Erstellen der Übersichten der Module, die quasi nebenbei beim Kompilieren in die LLVM-Zwischenschicht (Intermediate Representation, IR) erzeugt werden. Dabei werden sämtliche globalen Variablen und Funktionen berücksichtigt und eine Modul-Übersicht enthält zudem Metadaten, die als Abstraktion für einzelne Symbole dienen soll.

Golem Akademie
  1. Java EE 8 Komplettkurs: virtueller Fünf-Tage-Workshop
    24.–28. Januar 2022, virtuell
  2. Kotlin für Java-Entwickler: virtueller Zwei-Tage-Workshop
    03.–04. Februar 2022, Virtuell
Weitere IT-Trainings

Zwar sei Thin LTO noch in Arbeit, die LLVM-Autoren bewerten dessen Leistung aber im Vergleich zur bisherigen LTO als gut. So werden in vielen Fällen die Leistungssteigerungen des LTO auch mit der neuen Technik erreicht. Allerdings ist der gesamte Kompiliervorgang mit dem neuen Ansatz wesentlich schneller als das alte LTO und reicht fast an die Geschwindigkeit des Kompilierens mit der normalen Optimierung heran. Darüber hinaus sind anders als bei der alten Technik mit Thin LTO sehr schnelle inkrementelle Builds möglich.

Derzeit genutzt werden kann Thin LTO mit dem Gold Plugin ebenso wie Ld64 in Apples Xcode 8. In der kommenden Version LLVM 3.9 wird das C-Frontend Clang Thin LTO über eine Kommandozeilenoption unterstützen.

Bitte aktivieren Sie Javascript.
Oder nutzen Sie das Golem-pur-Angebot
und lesen Golem.de
  • ohne Werbung
  • mit ausgeschaltetem Javascript
  • mit RSS-Volltext-Feed


Aktuell auf der Startseite von Golem.de
Xbox Cloud Gaming
Wenn ich groß bin, möchte ich gerne Netflix werden

Call of Duty, Fallout oder Halo: Neue Spiele bequem am Business-Laptop via Stream zocken, klingt zu gut, um wahr zu sein. Ist auch nicht wahr.
Ein Erfahrungsbericht von Benjamin Sterbenz

Xbox Cloud Gaming: Wenn ich groß bin, möchte ich gerne Netflix werden
Artikel
  1. Lego Star Wars UCS AT-AT aufgebaut: Das ist kein Mond, das ist ein Lego-Modell
    Lego Star Wars UCS AT-AT aufgebaut
    "Das ist kein Mond, das ist ein Lego-Modell"

    Ganz wie der Imperator es wünscht: Der Lego UCS AT-AT ist riesig und imposant - und eines der besten Star-Wars-Modelle aus Klemmbausteinen.
    Ein Praxistest von Oliver Nickel

  2. Kryptowährung im Fall: Bitcoin legt rasante Talfahrt hin
    Kryptowährung im Fall
    Bitcoin legt rasante Talfahrt hin

    Am Samstag setzte sich der Absturz des Bitcoin fort. Ein Bitcoin ist nur noch 34.200 US-Dollar wert. Auch andere Kryptowährungen machen Verluste.

  3. Andromeda: Dieses Microsoft-Smartphone-Betriebssystem erschien nie
    Andromeda
    Dieses Microsoft-Smartphone-Betriebssystem erschien nie

    Erstmals ist ein Blick auf Andromeda möglich - das Smartphone-Betriebssystem, das Microsoft bereits vor einigen Jahren eingestellt hat.

Du willst dich mit Golem.de beruflich verändern oder weiterbilden?
Zum Stellenmarkt
Zur Akademie
Zum Coaching
  • Schnäppchen, Rabatte und Top-Angebote
    Die besten Deals des Tages
    Daily Deals • MediaMarkt & Saturn: Heute alle Produkte versandkostenfrei • Corsair Vengeance RGB RT 16-GB-Kit DDR4-4000 114,90€ • Alternate (u.a. DeepCool AS500 Plus 61,89€) • Acer XV282K UHD/144 Hz 724,61€ • MindStar (u.a. be quiet! Pure Power 11 CM 600W 59€) • Sony-TVs heute im Angebot [Werbung]
    •  /