Exigences : En consultant le code source .NET, j’ai constaté que certaines méthodes ont ajouté la fonctionnalité [MethodImpl(MethodImplOptions.AggressiveInlining)], mais j’ai constaté que la fonctionnalité MethodImpl peut affecter le comportement du compilateur JIT. Certains tests ont été réalisés sur la base d’informations sur Internet.
Configuration MethodImplOptions
Code:
Fonction en ligne
En informatique, une fonction en ligne (parfois appelée fonction en ligne ou fonction d’extension en temps de compilation) est un construct de langage de programmation utilisé pour suggérer que le compilateur peut étendre des extensions en ligne (parfois appelées extensions en ligne) vers certaines fonctions particulières ; Cela signifie que le compilateur insère et remplace le corps de la fonction spécifié à la place de chaque endroit (contexte) où la fonction est appelée, économisant ainsi le temps supplémentaire consacré à chaque appel à la fonction. Cependant, lors du choix d’utiliser des fonctions en ligne, il est nécessaire de peser l’espace occupé par le programme et l’efficacité de l’exécution du programme, car trop de fonctions complexes pour une expansion en ligne entraîneront de lourdes dépenses en ressources de stockage. Il est également important de noter que les extensions en ligne de fonctions récursives peuvent entraîner une compilation infinie de certains compilateurs.
MéthodeImplOptions.AgressifInlining
Fonction : Il est recommandé que le compilateur JIT intègre la méthode autant que possible. Explication : En ligne fait référence au remplacement d’un appel de fonction par le corps de fonction lui-même, réduisant ainsi la surcharge de l’appel de fonction. Scénarios applicables : Adaptés aux méthodes petites et fréquemment appelées (par exemple, accesseurs d’attributs, calculs mathématiques simples, etc.). Note : Ce n’est qu’une « suggestion », le compilateur JIT peut décider s’il doit réellement s’inline ou non, selon la situation réelle.
Les résultats du test « en ligne » et « non en ligne » sont les suivants :
Le code de test est le suivant :
Il a été constaté que l’utilisation du processeur après l’inline était bien inférieure à celle des appels non en ligne également, en faitNe soyez pas trop anxieux, les compilateurs actuels sont très intelligents, même sans ajouter cette fonctionnalité, le compilateur peut vous aider à optimiser automatiquement。 |