Si bien sería conveniente usar funciones en línea en algunas situaciones,¿Qué hay de malo con el uso de funciones en línea?
¿Hay algún inconveniente con las funciones en línea?
Conclusión:
Al parecer, no hay nada malo con el uso de las funciones en línea.
¡Pero vale la pena señalar los siguientes puntos!
El uso excesivo de inline puede hacer que los programas sean más lentos. Dependiendo del tamaño de una función, al alinearla puede aumentar o disminuir el tamaño del código. Alinear una función de acceso muy pequeña generalmente disminuirá el tamaño del código, mientras que una función muy grande puede aumentar drásticamente el tamaño del código. En los procesadores modernos, el código más pequeño generalmente se ejecuta más rápido debido al mejor uso de la memoria caché de instrucciones. - Google Guidelines
Los beneficios de velocidad de las funciones en línea tienden a disminuir a medida que la función aumenta de tamaño. En algún momento la sobrecarga de la llamada a la función se hace pequeño en comparación con la ejecución del cuerpo de la función, y el beneficio se pierde - Source
Hay pocas situaciones en las que una función en línea puede no funcionar:
- Para una función que devuelve valores; si existe una declaración de devolución.
- Para una función que no devuelve ningún valor; si existe una instrucción loop, switch o goto.
- Si una función es recursiva. -Source
La palabra clave
__inline
provoca una función para ser inline sólo si se especifica la opción optimizada. Si se especifica optimize, el hecho de que se cumpla o no el__inline
depende de la configuración de la opción del optimizador en línea. De forma predeterminada, la opción en línea tiene efecto cada vez que se ejecuta el optimizador. Si especifica optimizar, también debe especificar la opción noinline si desea ignorar la palabra clave__inline
. -Source
Buen resumen. Tenga en cuenta que el compilador aplica las viñetas sobre cuándo está en línea y, cuando no, son más bien específicas del compilador. (MSVC lo hará diferente de gcc de ...) –
"Hay algunas situaciones en las que una función en línea puede no funcionar: Para una función que devuelve valores; si existe una declaración de devolución. Para una función que no devuelve ningún valor "También puede decir que" las funciones en línea pueden no funcionar ". –