Mit jelent a függvények sorba állítása, és milyen hatással van ez egy programra?

Válasz

Az inline függvény olyan függvény, amelynél a fordító a függvénydefiníció kódját közvetlenül a hívó függvény kódjába másolja, ahelyett, hogy külön utasításkészletet hozna létre a memóriában. Ez kiküszöböli a híváskapcsolási többletterheket, és jelentős optimalizálási lehetőségeket tárhat fel. Az “inline” specifikátor használata csak javaslatot tesz a fordítónak arra, hogy az inline bővítés elvégezhető; a fordító szabadon figyelmen kívül hagyhatja a javaslatot.
Az inlining néhány hatása:

  1. A legtöbb esetben az inlining növeli a program méretét. De néhány esetben, amikor a függvény mérete kisebb, mint a függvényhívás kódjának mérete, az inlining csökkentheti a program méretét.
  2. A legtöbb esetben az inlining javíthatja a végrehajtási időt a hívási többletköltségek elkerülése révén, és az optimalizáló által történő esetleges átlátás (nem átlátszó függvénnyé téve) több optimalizálási lehetőséget biztosít. Ha azonban a függvényt nem hívják gyakran, akkor nem lesz látható futásidő javulás.
  3. A belinkelés növeli a gyakorlati csatolást azáltal, hogy a hívó potenciálisan támaszkodik a belinkelt kód belső implementációs részleteire. A gyakorlati csatolással az a probléma, hogy amikor az inlined hívó megváltozik, újra kell fordítani a hívót. Ez az építési és fejlesztési idő költségét jelenti.

A legjobb megközelítés az lenne, ha visszatartanánk az inlininget, amíg be nem fejezzük a program profilozását. Ez segít eldönteni, hogy az inliningből származik-e bármilyen többletelőnye.

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.