Home

Funktionsinlining

Funktionsinlining bezeichnet eine Optimierung von Compilern, bei der Aufrufe einer Funktion durch den eigentlichen Funktionskörper ersetzt werden. Dadurch entfallen der Aufruf-Overhead und der Sprung zur Funktion, und der kompilierte Code kann an der Aufrufstelle direkt weiteroptimiert werden. Ziel ist es, die Laufzeit zu verbessern und gleichzeitig weitere Optimierungen zu ermöglichen, da der Code an der Stelle des Aufrufs sichtbar wird.

Das Inlining erfolgt entweder explizit durch Hinweise wie das inline-Schlüsselwort oder automatisch durch den Optimierer. In

Zu den Vorteilen gehören niedrigere Laufzeitkosten durch Wegfall des Funktionsaufrufs, sowie erweiterte Optimierungsmöglichkeiten wie Konstantenpropagierung, Dead-Code-Elimination,

Nachteile umfassen potenzielle Codevergrößerung (Code-Bloat), was die Instruction-Cache-Effizienz verschlechtern kann, sowie längere Compile-Zeiten. Sehr große oder

In der Praxis wird Inlining häufig für kleine, häufig verwendete Funktionen eingesetzt, z. B. einfache Getter

vielen
Sprachen
entscheiden
heuristische
Regeln
über
das
Inlining,
zum
Beispiel
basierend
auf
Funktionsgröße,
Aufrufhäufigkeit
oder
der
Kompositionskomplexität.
Bei
C
oder
C++
können
inline-Funktionen
auch
in
Header-Dateien
definiert
werden;
moderne
Compiler
treffen
dennoch
eigene
Entscheidungen,
ob
eine
Funktion
tatsächlich
eingebettet
wird.
bessere
Registerplanung
und
verbesserte
instruction-level
Parallelität.
Inlining
kann
dadurch
auch
zu
einer
insgesamt
schnelleren
Ausführung
von
Codepfaden
beitragen,
die
häufig
erreicht
werden.
rekursive
Funktionen
eignen
sich
selten
zum
Inlining,
da
der
Codeumfang
stark
anwachsen
kann
und
die
Vorteile
überwiegen.
oder
Operationen
mit
geringer
Komplexität.
In
Just-in-Time-Umgebungen
kann
das
Inlining
dynamisch
anhand
von
Laufzeitprofilen
erfolgen.