www.wikidata.de-de.nina.az
Dieser Artikel oder nachfolgende Abschnitt ist nicht hinreichend mit Belegen beispielsweise Einzelnachweisen ausgestattet Angaben ohne ausreichenden Beleg konnten demnachst entfernt werden Bitte hilf Wikipedia indem du die Angaben recherchierst und gute Belege einfugst Die Inline Ersetzung ist eine Optimierungsmethode von Compilern zur Steigerung der Ausfuhrungsgeschwindigkeit eines Computerprogramms Dabei wird der Code der aufzurufenden Funktion an Stelle des Aufrufs kopiert Das reduziert den Mehraufwand fur den Aufruf Sichern der Register Vorbereiten des Stacks verbessert die Lokalitat und weiterhin kann bei der Optimierung der Code beider Funktionen gemeinsam berucksichtigt werden Beispiel BearbeitenFolgender Quelltext in C inline int quadrat int x return x x int c int a int b return quadrat a quadrat b kann von Compiler so ubersetzt werden dass nicht die Funktion aufgerufen sondern die Funktionsdefinition direkt eingefugt wird Dieses Verhalten ist optional weiterhin kann es auch ohne Angabe des Schlusselwortes inline durch die Kurze der Funktion quadrat ausgelost werden Das Gleiche kann mit der simplen Funktion c selbst auch passieren d h auch diese kann geinlined werden Weiterhin stellt das empfohlene Inlining keine Optimierung durch den Compiler sondern eine durch den Programmierer dar int c int a int b return a a b b Inline Ersetzungen konnen in C teilweise die Funktion von Makros ubernehmen bieten aber zusatzlich die Sicherheit einer statischen Typprufung wie bei Funktionen Da diese mittlerweile haufig unerwunscht ist generische Programmierung formuliert man seit C 98 ublicherweise so template lt class T gt T quadrat T x return x x template lt class T gt T c T a T b return quadrat a quadrat b Sie muss explizit deklariert werden und kann fur von Klassen unabhangige wie auch fur Elementfunktionen Methoden verwendet werden In den Interna des Compilers sind Makros und Inline Ersetzungen jedoch nicht zu vergleichen Es ist fur den Compiler aber nicht fur jede beliebig komplizierte Funktion moglich die vom Programmierer gewunschte Ersetzung auch durchzufuhren Die Funktion muss nicht kompliziert sein um sie nicht ersetzen zu konnen Beispiel inline double fact int x return x gt 1 x fact x 1 1 Dann wird der normale Funktionsaufruf beibehalten Vielmehr ist das inline im Beispiel als Empfehlung an den Compiler zu sehen der er aber nicht nachgehen muss Speziell in C gibt es fur Ausnahmefalle auch Compiler spezifische starkere Varianten von inline wie z B forceinline deren Einsatz jedoch auf Kosten der Portabilitat gehen kann Ohne solche Varianten wird das Inline Attribut jedoch von den meisten modernen Compilern zumindest bei hohen Optimierungsleveln ignoriert Manche Compiler konnen auch selbststandig fur Inline Ersetzung geeignete Funktionen in der Optimierungsphase identifizieren und ersetzen In der Programmiersprache Eiffel etwa ist nur diese automatische Inline Ersetzung vorgesehen Abgerufen von https de wikipedia org w index php title Inline Ersetzung amp oldid 228397507