Sommaire

Particularité des fonctions inline

1. Mécanisme des fonctions inline

Une fonctionnalité de .NET, par ailleurs présente sur de nombreuses autres plates-formes, est la notion de fonction inline (il s’agit du terme consacré, jamais traduit en français). Pour faire court, au lieu de faire un saut en mémoire vers l’emplacement du code machine, ce peu de code est recopié directement à l’endroit de l’appel de la fonction. Bien évidemment, cette optimisation n’est active que lorsque le code en question est très réduit (en l’occurrence 32 octets de code IL).

L’exemple ci-dessous montre deux fonctions, Fonction1 et Fonction2, qui réalisent le même calcul de deux manières. La première calcule directement le résultat voulu, tandis que la seconde passe par une fonction intermédiaire.

using System;

namespace FonctionInline
{
    class Program
    {
        static void Main(string[] args)
        {
            int resultat = Fonction1(1);
            resultat = Fonction2(1);
        }

        private static int Fonction1(int Parametre)
        {
            int Resultat = Parametre * 2;
            return Resultat + 1;
        }

        private static int Fonction2(int Parametre)
        {
            int Resultat = FonctionIntermediaire(Parametre);
            return Resultat + 1;
        }

        private static int FonctionIntermediaire(int Parametre)
        {
            return Parametre * 2;
        }
    }
}

Si nous regardons le code IL correspondant, nous obtenons le contenu suivant pour Fonction1 :

02EI10.png

Code IL correspondant à Fonction1

Même si le précédent exemple de code IL n’a ...