Manchmal rufen Compiler Inline-Funktionen auf. Das heißt, sie verschieben den Code der aufgerufenen Funktion in die aufrufende Funktion. Dies macht die Dinge etwas schneller, da es nicht notwendig ist, Dinge auf den Call-Stack zu schieben und von ihm zu entfernen.
Meine Frage ist also, warum Compiler nicht alles inline? Ich nehme an, es würde die ausführbare Datei deutlich schneller machen.
Der einzige Grund, den ich mir vorstellen kann, ist eine erheblich größere ausführbare Datei. Aber spielt es heutzutage wirklich eine Rolle, wenn Hunderte von GB Speicher zur Verfügung stehen? Lohnt sich die verbesserte Leistung nicht?
Gibt es einen anderen Grund, warum Compiler nicht alle Funktionsaufrufe einbinden?
Isn't the improved performance worth it?
Bei einer Methode, die eine Schleife 100-mal ausführt und einige wichtige Zahlen zusammenfasst, ist der Aufwand für das Verschieben von 2 oder 3 Argumenten in CPU-Register gleich Null.