Inlining

Définition, exemples et bonnes pratiques

À retenir

  • Supprime le surcoût lié à l'appel d'une fonction (sauvegarde du contexte).
  • Améliore la vitesse d'exécution au prix d'une augmentation possible de la taille du fichier.
  • C'est une optimisation automatique faite par le compilateur ou suggérée par le développeur via des mots-clés.

L'inlining est une technique d'optimisation utilisée par les compilateurs qui consiste à copier directement le code d'une petite fonction à l'endroit où elle est appelée, au lieu d'effectuer un saut pour l'exécuter. Imaginez que pour préparer une recette, au lieu de devoir ouvrir un autre livre à la page 'Sauce' (appel de fonction), vous aviez les instructions de la sauce directement écrites au milieu de votre recette principale (inlining) : vous gagnez du temps car vous n'avez pas à changer de page.

Étymologie

Vient de l'anglais in line (en ligne). En programmation, cela signifie que le code est inséré directement dans le flux linéaire des instructions, sans rupture de séquence.

Exemples d'usage

  • Une fonction carre(x) qui renvoie simplement x * x : le compilateur remplace l'appel par le calcul direct.
  • Les fonctions de type 'getters' et 'setters' en programmation orientée objet, qui sont souvent très courtes.

Cas d'usage

On l'utilise principalement dans le développement de logiciels où la performance est critique (jeux vidéo, systèmes embarqués, calcul scientifique). C'est particulièrement efficace pour les petites fonctions répétées des milliers de fois dans des boucles.

Bonnes pratiques

Il ne faut pas abuser de l'inlining pour des fonctions volumineuses, car cela augmente la taille finale du programme (code bloat), ce qui peut paradoxalement ralentir l'ordinateur en saturant sa mémoire cache. Aujourd'hui, il est souvent préférable de laisser le compilateur décider seul de ce qu'il doit 'inliner'.

Synonymes

expansion en ligne intégration de fonction substitution de fonction

Antonymes

appel de fonction saut de sous-programme

Conseil

Si vous débutez, ne vous souciez pas trop de l'inlining manuel. Concentrez-vous sur l'écriture d'un code clair et lisible ; les compilateurs modernes sont extrêmement intelligents et sauront optimiser votre code bien mieux qu'un humain dans 99 % des cas.

Questions fréquentes

L'inlining est-il toujours bénéfique ?

Non, si la fonction est trop complexe, son insertion répétée alourdit le programme et peut dégrader les performances de la mémoire cache du processeur.

Peut-on forcer l'inlining ?

Dans des langages comme le C++ ou le C, on utilise le mot-clé 'inline', mais c'est souvent considéré comme une simple suggestion que le compilateur peut ignorer.