Odpověď
Vložená funkce je taková, u které překladač zkopíruje kód z definice funkce přímo do kódu volající funkce, místo aby vytvořil samostatnou sadu instrukcí v paměti. Tím se eliminuje režie spojování volání a mohou se objevit významné možnosti optimalizace. Použití specifikátoru „inline“ je pouze návrhem překladači, že lze provést inline expanzi; překladač může tento návrh ignorovat.
Některé účinky inlinování jsou:
- Ve většině případů inlinování zvyšuje velikost programu. Ale v některých případech, kdy je velikost funkce menší než velikost kódu volání funkce, by inlining mohl velikost programu snížit.
- Ve většině případů by inlining mohl zlepšit dobu provádění tím, že se vyhne režii volání a možnému průhledu optimalizátorem (udělá z něj neprůhlednou funkci) pro více možností optimalizace. Pokud se však funkce nevolá často, nebude mít viditelné zlepšení doby běhu.
- Inlinování zvyšuje praktickou vazbu tím, že volající se potenciálně spoléhá na vnitřní implementační detaily inlinovaného kódu. Problém s praktickou vazbou spočívá v tom, že když se inlinovaný volající změní, je třeba překompilovat volajícího. To představuje náklady na sestavení a čas vývoje.
Nejlepším přístupem by bylo odložit inlinování, dokud nedokončíte profilování programu. To vám pomůže zjistit, zda vám inlinování přinese nějaké další výhody.