Compilers
Welke combinatie van voordeel en nadeel van het inlinen (inline expansion) van functies is juist?
- AVoordeel: de code wordt kleiner; nadeel: de overhead van aanroepen neemt toe
- BVoordeel: het compileren is sneller klaar; nadeel: het uitvoeringsresultaat verandert
- CVoordeel: de overhead van aanroepen verdwijnt; nadeel: de code wordt groter
Antwoord en toelichting tonen
Antwoord: C. Voordeel: de overhead van aanroepen verdwijnt; nadeel: de code wordt groter
Bij inlining wordt in plaats van een aanroep de body van de functie ingevoegd, zodat de overhead van argumentoverdracht, sprong en terugkeer verdwijnt. Een groot voordeel is bovendien dat constanten enz. van de aanroeper naar de body doorwerken, zodat constant folding en het verwijderen van dode code effect krijgen. Anderzijds ontstaat bij elke aanroep een kopie van de body, waardoor de code groter wordt en instructiecache-missers kunnen toenemen; daarom worden kleine of vaak aangeroepen functies gekozen. Als het juist wordt uitgevoerd, verandert het uitvoeringsresultaat niet.