Réponse:
L'expansion en ligne duplique le code du corps de la fonction.
De façon générale, il faut limiter l'expansion en ligne en tenant
compte du rapport entre la taille du code source et celle du code résultant de
l'expansion en ligne et éventuellement du gain en rapidité d'exécution.
Pour de petites fonctions auxiliaires, comme ci-dessus, le code résultant
de l'expansion est plus petit que le code d'un appel de fonction (qui inclue
le code protocolaire de placement des arguments, et de récupération du
résultat). On a donc simultanément un gain en espace et en rapidité
d'exécution. De tels appels peuvent être systématiquement mis en ligne.
À l'opposé de grosses fonctions ne seront jamais mises en ligne, sauf
peut-être si elles ne sont appelées qu'une seule fois, ou si elles sont
dans à l'interieurs de boucles critiques les plus internes.
Les fonctions récursives sont un cas particulier pour lesquelles
l'expansion en ligne n'est pas possible. (On peut en revanche
dérouler la récursion un petit nombre de fois.)