Looking for go Answers? Try Ask4KnowledgeBase
Looking for go Keywords? Try Ask4Keywords

GoExpansión en línea


Observaciones

La expansión en línea es una optimización común en el código compilado que prioriza el rendimiento sobre el tamaño binario. Permite al compilador reemplazar una llamada de función con el cuerpo real de la función; efectivamente copiar / pegar código de un lugar a otro en tiempo de compilación. Dado que el sitio de llamada se expande para contener solo las instrucciones de la máquina que el compilador generó para la función, no tenemos que realizar una LLAMADA o EMPUJAR (el equivalente x86 de una declaración GOTO o un empuje de marco de pila) o su equivalente en otra arquitecturas

El inliner toma decisiones acerca de si debe o no incluir una función basada en una serie de heurísticas, pero en general, ir en línea de forma predeterminada. Debido a que el inliner se deshace de las llamadas a funciones, puede decidir de manera efectiva dónde se le permite al programador anticiparse a una goroutina.

Las llamadas a funciones no se incluirán si cualquiera de las siguientes afirmaciones es verdadera (también hay muchas otras razones, esta lista está incompleta):

  • Las funciones son variad (por ejemplo, tienen ... args)
  • Las funciones tienen una "máxima pereza" mayor que el presupuesto (se repiten demasiado o no se pueden analizar por alguna otra razón)
  • Contienen panic , se recover , o defer

Expansión en línea Ejemplos relacionados