Diferencia entre función en línea y normal en C++

Función en línea es una función que el compilador expande en línea cuando se invoca. Durante la llamada de función, se realizan muchas tareas generales, como guardar registros, enviar argumentos a la pila y volver a la función de llamada. Estos gastos generales consumen mucho tiempo y son ineficientes para funciones de tamaño pequeño. En C++, la función en línea se usa para resolver estos costos generales. El compilador lo expande en línea cuando se lo invoca, por lo que se evitan los costos generales. Una palabra clave conocida como ‘ inline se usa antes de la declaración de la función. 

Sintaxis:

inline return_type function_name(parameters) 
{
// Insert your Function code here
}

Ejemplo:

C++

// C++ program to demonstrate inline function
 
// Importing input output stream files
#include <iostream>
 
using namespace std;
 
// Method 1
// Inline function
// To multiply two integer numbers
inline int multiplication(int x, int y)
{
 
    // Returning the product of two numbers
    return x * y;
}
 
// Method 2
// Main driver method/function
// Execution begins here
int main()
{
    // Print and display the multiplication resultant number
    // with usage of above created multiplication() inline()
    cout << "Multiplication ( 20 , 30 ):"
         << multiplication(20, 30) << endl;
 
    return 0;
}
Producción

Multiplication ( 20 , 30 ):600

Ahora, pensando en la siguiente función, como sugiere el nombre, Normal Function es básicamente una función común en C++ . Promueve la reutilización de código y hace que el programa sea modular. Durante las llamadas a funciones, se realizan muchas tareas generales, como guardar registros, enviar argumentos a la pila y volver a la función de llamada. 

Sintaxis: 

return_type_name function_name( parameters) 
{ 
 // Insert your Function code here 
}

Ejemplo: 

C++

// Importing input output streams
#include <iostream>
 
using namespace std;
 
// Method/Function
// To get square of integer number been passed
int square(int s)
{
    // Returning the square of number
    return s * s;
}
 
// Method
int main()
{
    // Calling the square() method/function
    // over randoM value N
     
    // Say N = 5
    // Display message only
    cout << "Enter number to compute its square : 5 " << endl;
 
    // Calling the above square() in main()
    // and print/display on the console
    cout << "Square is : " << square(5) << endl;
   
  return 0;
}
Producción

Enter number to compute its square : 5 
Square is : 25

Diferencia entre la función en línea y la función normal en C++

S. No.              

Función en línea 

función normal  

1. Se expande en línea cuando se invoca.  Es una función que aporta modularidad al programa.  
2. Generalmente se utiliza para aumentar el tiempo de ejecución del programa. Generalmente se usa para mejorar la reutilización del código y hacerlo más mantenible.  
3. Es básicamente una función que se usa cuando las funciones son pequeñas y se llaman con mucha frecuencia.   Es básicamente un grupo de declaraciones que realiza una tarea particular. Se utiliza cuando las funciones son grandes.
4. Requiere la palabra clave ‘ inline en su declaración.   No requiere ninguna palabra clave en su declaración.  
5. Por lo general, se ejecuta mucho más rápido en comparación con las funciones normales.   Por lo general, se ejecuta más lentamente que la función en línea para funciones de tamaño pequeño.  
6. En esto, el cuerpo de funciones se copia a cada contexto donde se usa, lo que a su vez reduce el tiempo de búsqueda del cuerpo en el dispositivo de almacenamiento o disco duro. En esto, el cuerpo de la función se almacena en el dispositivo de almacenamiento y cuando se llama a esa función en particular cada vez, la CPU tiene que cargar el cuerpo del disco duro a la RAM para su ejecución.  
7. El compilador siempre coloca una copia del código de esa función en cada punto donde se llama a la función en tiempo de compilación.  No proporciona ese tipo de funcionalidad.  
8. Por lo general, incluye solo códigos de 2 o 3 líneas.   Cuando el número de códigos de línea es realmente masivo, es decir, las funciones normales contienen mucho código según la necesidad.  
9. Es un poco más difícil de entender y probar en comparación con el funcionamiento normal.   Es mucho más fácil de entender y probar en comparación con la función en línea. 
10 Las funciones que están presentes dentro de una clase están implícitamente en línea.   Las funciones que están presentes fuera de la clase se consideran funciones normales.  
11 Demasiadas funciones en línea afectan el tamaño del archivo después de la compilación, ya que duplica el mismo código.   Demasiadas funciones normales no afectan el tamaño del archivo después de la compilación. 

Publicación traducida automáticamente

Artículo escrito por madhurihammad y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *