Svar
En inline-funktion är en funktion för vilken kompilatorn kopierar koden från funktionsdefinitionen direkt in i koden för den anropande funktionen i stället för att skapa en separat uppsättning instruktioner i minnet. Detta eliminerar överskottskostnader för anropslänkning och kan avslöja betydande optimeringsmöjligheter. Att använda specifikationen ”inline” är endast ett förslag till kompilatorn om att en inlineexpansion kan utföras; kompilatorn är fri att ignorera förslaget.
Några effekter av inlining är:
- I de flesta fall ökar inlining programstorleken. Men i vissa fall, när funktionens storlek är mindre än kodens storlek för funktionsanropet, kan inlining minska programstorleken.
- I de flesta fall kan inlining förbättra exekveringstiden genom att undvika anropets overhead, och eventuellt genomskådas av optimeraren (genom att göra den till en icke-genomskinlig funktion) för fler optimeringsmöjligheter. Om funktionen inte anropas ofta kommer den dock inte att ha någon synlig körtidsförbättring.
- Inlining ökar den praktiska kopplingen genom att anroparen potentiellt blir beroende av den inlinade kodens interna implementeringsdetaljer. Problemet med praktisk koppling är att när den inlinade kalendariet ändras måste man kompilera om anroparen. Detta är en kostnad för bygg- och utvecklingstiden.
Det bästa tillvägagångssättet skulle vara att avvakta med inlining tills du är klar med att profilera ditt program. Detta kommer att hjälpa till att avgöra om du får några extra fördelar av inlining.