Desenrollado de bucles

El desenrollado de bucles es una técnica de transformación de bucles que ayuda a optimizar el tiempo de ejecución de un programa. Básicamente eliminamos o reducimos iteraciones. El desenrollado del bucle aumenta la velocidad del programa al eliminar las instrucciones de control del bucle y las instrucciones de prueba del bucle. Programa 1: CPP
   // This program does not uses loop unrolling.   #include      int     main  (  void  )   {      for     (  int     i  =  0  ;     i   <  5  ;     i  ++  )      printf  (  'Hello  n  '  );     //print hello 5 times      return     0  ;   }      
Programa 2: CPP
   // This program uses loop unrolling.   #include      int     main  (  void  )   {      // unrolled the for loop in program 1      printf  (  'Hello  n  '  );      printf  (  'Hello  n  '  );      printf  (  'Hello  n  '  );      printf  (  'Hello  n  '  );      printf  (  'Hello  n  '  );      return     0  ;   }      
Output:
Hello Hello Hello Hello Hello  
Ilustración: El programa 2 es más eficiente que el programa 1 porque en el programa 1 es necesario verificar el valor de i e incrementar el valor de i cada vez que se realiza el ciclo. Por lo tanto, los bucles pequeños como este o los bucles en los que hay un número fijo de iteraciones involucradas se pueden desenrollar por completo para reducir la sobrecarga del bucle.

Ventajas:

  • Aumenta la eficiencia del programa.
  • Reduce la sobrecarga del bucle.
  • Si las declaraciones en bucle no dependen entre sí, se pueden ejecutar en paralelo.

Desventajas:

  • Aumento del tamaño del código del programa, lo que puede resultar indeseable.
  • Posible mayor uso del registro en una sola iteración para almacenar variables temporales que pueden reducir el rendimiento.
  • Aparte de códigos muy pequeños y simples, los bucles desenrollados que contienen ramas son incluso más lentos que las recursiones.
Referencia: https://en.wikipedia.org/wiki/Loop_unrolling Crear cuestionario