Rekursives Funktions-Inlining
Es ist ein weit verbreitetes Missverständnis, dass rekursive Funktionen nicht inline sein können. Allerdings können Compiler tatsächlich rekursive Funktionen integrieren, wenn auch unter bestimmten Voraussetzungen.
Inline-Qualifikator vs. Compiler-Optimierung
Der Inline-Spezifizierer für eine Funktion ist lediglich ein Hinweis auf die Compiler. Der Compiler hat das letzte Wort darüber, ob die Funktion eingebunden wird oder nicht, unabhängig vom Inline-Qualifizierer.
Inlining-Entscheidung des Compilers
Ein Compiler entscheidet, ob eine Funktion basierend auf eingebunden wird auf Faktoren wie:
Beispiel für Inlining-Optimierung
Betrachten Sie die folgende rekursive Fakultätsfunktion:
inline int factorial(int n) {
if (n Ein optimierender Compiler könnte diese Funktion möglicherweise auf eine bestimmte Ebene integrieren, wie im folgenden optimierten Code zu sehen ist:
int factorial(int n) {
if (n In diesem Fall hat der Compiler die Fakultätsfunktion dreimal abgewickelt und damit effektiv einen Teil der rekursiven Aufrufe inline eingefügt.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3