Desenrollado de bucle

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 las iteraciones. El desenrollado de bucles aumenta la velocidad del programa al eliminar las instrucciones de control de bucles y las instrucciones de prueba de bucles.

Programa 1:

// This program does not uses loop unrolling.
#include<stdio.h>
  
int main(void)
{
    for (int i=0; i<5; i++)
        printf("Hello\n"); //print hello 5 times
  
    return 0;
} 

Programa 2:

// This program uses loop unrolling.
#include<stdio.h>
  
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;
} 

Producción:

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 completa el ciclo. Por lo tanto, los bucles pequeños como este o los bucles donde 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 unas de otras, se pueden ejecutar en paralelo.

Desventajas:

  • Aumento del tamaño del código del programa, lo que puede ser indeseable.
  • Posible mayor uso de registro en una sola iteración para almacenar variables temporales que pueden reducir el rendimiento.
  • Aparte de los 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

Este artículo es una contribución de Harsh Agarwal . Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo usando contribuya.geeksforgeeks.org o envíe su artículo por correo a contribuya@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.

Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 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 *