Co znamená zařadit funkci do řádku a jaký to má vliv na program?

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:

  1. 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.
  2. 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.
  3. 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.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.