Compilateurs
Quelle combinaison d'avantage et d'inconvénient de l'expansion en ligne (inlining) des fonctions est correcte ?
- AAvantage : le code diminue ; inconvénient : le coût d'appel augmente
- BAvantage : la compilation est plus rapide ; inconvénient : le résultat d'exécution change
- CAvantage : le coût d'appel disparaît ; inconvénient : le code grossit
Afficher la réponse et l'explication
Réponse : C. Avantage : le coût d'appel disparaît ; inconvénient : le code grossit
L'expansion en ligne insère le corps de la fonction à la place de l'appel, ce qui supprime le passage des arguments, le branchement et le retour. Un avantage majeur est que les constantes de l'appelant se propagent dans le corps, rendant efficaces le repliement de constantes et la suppression de code mort. En revanche, chaque appel recopie le corps, ce qui grossit le code et peut augmenter les défauts de cache d'instructions ; on la réserve donc aux petites fonctions ou aux fonctions souvent appelées. Correctement réalisée, elle ne change pas le résultat d'exécution.