Looking for go Keywords? Try Ask4Keywords

GoExpansion Inline


Remarques

L'expansion en ligne est une optimisation courante du code compilé qui privilégie les performances par rapport à la taille binaire. Il permet au compilateur de remplacer un appel de fonction par le corps même de la fonction; copier / coller efficacement du code d'un endroit à un autre au moment de la compilation. Comme le site d’appel est développé pour contenir uniquement les instructions machine générées par le compilateur pour la fonction, nous n’avons pas à exécuter un appel CALL ou PUSH (l’équivalent x86 d’une instruction GOTO ou d’un push de cadre) ou leur équivalent sur d’autres des architectures.

L'inliner prend des décisions sur l'inclusion ou non d'une fonction basée sur un certain nombre d'heuristiques, mais en général, Go s'intègre par défaut. Parce que l'inliner se débarrasse des appels de fonction, il parvient effectivement à décider où le planificateur est autorisé à préempter une goroutine.

Les appels de fonction ne seront pas mis en ligne si l’une des conditions suivantes est vraie (il y a également beaucoup d’autres raisons, cette liste est incomplète):

  • Les fonctions sont variadiques (par exemple, elles ont ... args)
  • Les fonctions ont un "maximum de cheveux" supérieur au budget (elles se répètent trop ou ne peuvent pas être analysées pour une autre raison)
  • Ils contiennent la panic , recover ou defer

Expansion Inline Exemples Liés