Que signifie « inline » d’une fonction et comment cela affecte-t-il un programme ?

Réponse

Une fonction inline est une fonction pour laquelle le compilateur copie le code de la définition de la fonction directement dans le code de la fonction appelante plutôt que de créer un ensemble séparé d’instructions en mémoire. Cela élimine la surcharge de la liaison d’appel et peut exposer des opportunités d’optimisation importantes. L’utilisation du spécificateur « inline » est seulement une suggestion au compilateur qu’une expansion inline peut être effectuée ; le compilateur est libre d’ignorer la suggestion.
Certains des effets de l’inlining sont:

  1. Dans la plupart des cas, l’inlining augmente la taille du programme. Mais dans certains cas, lorsque la taille de la fonction est plus petite que la taille du code d’appel de la fonction, l’inlining pourrait réduire la taille du programme.
  2. Dans la plupart des cas, l’inlining pourrait améliorer le temps d’exécution en évitant l’overhead d’appel, et la possibilité de voir à travers par l’optimiseur (en faisant une fonction non opaque) pour plus d’opportunités d’optimisation. Cependant, si la fonction n’est pas appelée fréquemment, elle n’aura pas d’amélioration visible du temps d’exécution.
  3. L’inlining augmente le couplage pratique en rendant l’appelant potentiellement dépendant des détails d’implémentation internes du code inlined. Le problème du couplage pratique est que lorsque le callee inlined change, vous devez recompiler le caller. Cela représente un coût pour la construction et le temps de développement.

La meilleure approche serait de retenir l’inline jusqu’à ce que vous ayez fini de profiler votre programme. Cela aidera à déterminer si vous obtenez des avantages supplémentaires de l’inlining.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.