Cómo usar funciones en línea en C ++

Cómo usar funciones en línea en C ++
En C ++, el término "Funciones en línea" se refiere a la práctica de poner inmediatamente el código de una función en el lugar en el código donde se realiza la llamada de función en lugar de que se ejecute como una llamada de función distinta. Cuando un programa llama a una función, la CPU debe detener la ejecución del código principal, pasar el control a la función llamada y luego reanudar la ejecución de la función llamada.

Es uno de los métodos de optimización utilizados por los programadores para acelerar la ejecución de secciones de código sensibles al tiempo por compiladores. La sobrecarga de una llamada de función se puede eliminar por engranaje a función, que permite que el compilador reemplace la llamada de función con el contenido real de la función.

Cómo usar funciones en línea en c++

Usar funciones en línea En C ++, debe incluir la palabra clave 'en línea' Antes de la declaración de función. Aquí hay un ejemplo:

Inline int add (int a, int b)
devolver a + b;

El 'en línea' La palabra clave informa al compilador que sustituya una llamada a la función a lo largo del código del programa con el código real de la función. La definición de la función se modifica inmediatamente en la instrucción de llamadas en lugar de almacenarse junto con la dirección de memoria de la instrucción y se carga en la memoria.

Es importante tener en cuenta que el en línea La palabra clave le pide al compilador algo en lugar de darle un comando. En algunas circunstancias, el compilador puede decidir no en línea la función. Por lo tanto, puede usar una macro en lugar de definir en línea.

Ejemplo de funciones en línea

El siguiente es el código a usar funciones en línea En C ++:

#incluir
usando el espacio de nombres STD;
Inline int setnum ()
regresar 5;

int main ()
int n = setnum ();
cout << " The inline function returned: " << n <<"\n";
regresar 0;

En el programa anterior, la función setNum () se identifica como un función en línea Usando la frase "en línea". El compilador sustituye la declaración de llamada con la definición de setNum () Cuando se llama a esta función en línea. Como resultado, la instrucción sustituye 5 por setNum () y almacena 5 en la variable n.

Producción

Cuándo usar funciones en línea en c++?

Aunque la sobrecarga de cada llamada de función puede montarse rápidamente, funciones en línea puede aumentar considerablemente la velocidad en los programas que realizan numerosas llamadas de funciones menores. Sin embargo, Inlining Functions No siempre es la estrategia ideal porque puede hacer que el código sea más grande y potencialmente hacer que el sistema de almacenamiento de caché de la CPU sea menos efectivo.

Al determinar si en línea una función, Hay varias cosas a considerar.

1: Tamaño de la función

El tamaño de la función es uno de los elementos más cruciales. Las funciones más pequeñas suelen ser mejores candidatos para engranaje Dado que tienen menos probabilidades de afectar negativamente el tamaño del código y el almacenamiento en caché de la CPU. Además, dado que la sobrecarga de las llamadas de función puede constituir un cuello de botella, las funciones que se llaman con frecuencia o en bucles cercanos son candidatos adecuados para engranaje.

2: Nivel de optimización

El nivel de optimización del compilador también debe considerarse. La mayoría de los compiladores modernos tienen un "en línea" palabra clave que se puede usar para proponer que sea una función inclinado; Sin embargo, si el compilador juzga que no habría ventaja de velocidad, aún puede decidir no en línea la función. Los niveles de optimización más altos son donde los compiladores a menudo hacen optimizaciones más agresivas, por lo que las funciones que no son inclinado en los niveles más bajos también puede ser inclinado en niveles más altos.

3: Impacto de la inscripción

También es importante considerar el impacto de engranaje en el tamaño del código. Mientras engranaje puede mejorar el rendimiento al reducir la sobrecarga de las llamadas de funciones, también puede aumentar el tamaño del código, lo que potencialmente reduce la eficiencia del sistema de almacenamiento de caché de la CPU. En general, las funciones que son demasiado grandes o que contienen bucles o variables estáticas son malos candidatos para engranaje.

4: Programación de microarquitecturas

Funciones en línea se usan más en la programación de microarquitecturas, en los casos en que el costo general de las llamadas de función es significativo. También es valioso para crear pequeñas rutinas o evaluadores auxiliares que se llaman repetidamente a lo largo del código.

Conclusión

Funciones en línea En C ++ hay funciones poderosas para mejorar el rendimiento del programa, pero es importante considerar cuidadosamente el impacto de engranaje En el tamaño del código, el almacenamiento en caché de la CPU y el nivel de optimización. Al seleccionar cuidadosamente qué funciones en línea y en qué nivel de optimización, los desarrolladores pueden lograr mejoras significativas de rendimiento sin sacrificar el tamaño del código o la legibilidad.