Inlining in Go : stratégies et facteurs
Go détermine dynamiquement quelles fonctions sont adaptées à l'inline, offrant des avantages tels qu'une amélioration des performances. Bien que la déclaration explicite de l'inline ne soit pas prise en charge, la logique du compilateur prend en compte certains facteurs pour l'inline.
Candidats aux fonctions en ligne
Pour améliorer la probabilité d'inline, les critères suivants doivent être pris en considération :
-
Petite taille de fonction : Fonctions avec moins les lignes de code sont plus susceptibles d'être intégrées.
-
Fréquence d'appels élevée : Les fonctions qui sont fréquemment appelées au sein du programme sont de bonnes candidates pour l'intégration.
-
Fonctions pures : Les fonctions sans effets secondaires (par exemple, ne pas muter les données ni effectuer d'appels système) sont favorables pour inlining.
-
Aucune récursion : Les fonctions récursives ne peuvent pas être inline.
-
Aucune variable capturée de l'extérieur : Fonctions qui s'appuient sur des variables définies dans leur enceinte la portée ne peut pas être intégrée.
Influencer le Décision du compilateur
Bien qu'il ne soit généralement pas conseillé de contrôler explicitement l'inline, des problèmes de performances peuvent nécessiter de le faire. Dans ces situations, placer la fonction cible dans le même fichier que son appelant peut augmenter la probabilité d'inline.
Ressources supplémentaires
- Aller à la documentation du compilateur sur l'inline : [$GOROOT/src/cmd/compile/internal/inline/inl.go](https://go.googlesource.com/go/ /master/src/cmd/compile/internal/inline/inl.go)
- Drapeau de débogage pour contrôler l'agressivité : -l [niveau]
- Article de blog de Dave Cheney sur les performances de Go : [Cinq les choses qui font aller fast](https://dave.cheney.net/2014/06/07/five-things-that-make-go-fast)
- Discussion sur les améliorations en ligne : [cmd/compile : améliorer le coût en ligne modèle #17566](https://go-review.googlesource.com/c/go/ /17566)
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!