¿Las funciones en línea mejoran el rendimiento?

¡Sí, mejoran el rendimiento de su programa!

Cuando la función se define en línea, el cuerpo de esa función se sustituye con esa llamada de función con algunos cambios para los argumentos y esas cosas al compilar el programa.

Entonces, si define la función en línea para agregar dos números ayb en c ++, su función se verá como se muestra a continuación:

inline int sum (int a, int b) {

devuelve a + b;

}

int main () {

cout << add (5, 3);

cout << add (8,4);

}

se convertirá a:

int main () {

cout << 5 + 3;

cout << 8 + 4;

}

mientras compila el programa.

Ahora, ¿cómo puede esto mejorar el rendimiento? Cuando llamamos a una función, se realiza un trabajo adicional debajo del capó antes de ejecutar realmente la función. Todas las computadoras tienen registros para almacenar los valores de las variables. Solo estas variables se usan al realizar cualquier operación, no puede realizar directamente la operación aritmética en variables almacenadas en la memoria principal. Entonces, cuando se llama a una función, los valores de todos los registros para la función que llamó a la función add () se almacenarán en la pila en la memoria principal. Después de eso, los argumentos y las variables locales para la función add () se almacenan en la pila en la memoria principal. Y cuando todo esté completo, el programa real comenzará a ejecutarse.

Como el compilador sustituye el código de la función donde se llama a esa función como se muestra arriba, se evita la sobrecarga adicional al llamar a la función, lo que mejora el rendimiento del programa.

Esta es también la razón por la cual el programador recomienda una solución basada en bucle sobre una solución recursiva para cualquier problema, ya que la solución recursiva tendrá una sobrecarga de llamadas a funciones y también la pila para almacenar el valor de registro para todas las funciones es limitada. Si su recursión es muy profunda, existe una alta posibilidad de que sufra el problema del desbordamiento de la pila.

Depende de tu código.

El rendimiento de la función en línea depende principalmente de dos factores:

  1. Número de llamadas a funciones (es decir, gastos generales de la pila)
  2. tamaño de su código (ejecutable binario)

Las funciones en línea se intercambian entre los factores mencionados anteriormente para mejorar el rendimiento (por eso dije que depende).

Pero el compilador moderno puede o no alinear las funciones que marcó como en línea. También puede decidir en línea funciones no marcadas como en línea en el momento de la compilación o la vinculación.

¡Lo que sugeriría es centrarse en la legibilidad del código y dejar que el compilador haga su trabajo! (Tan sencillo como eso)