// This program does not uses loop unrolling. #include int main(void) { for (int i=0; i<5; i++) printf('Hellon'); //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('Hellon'); printf('Hellon'); printf('Hellon'); printf('Hellon'); printf('Hellon'); return 0; }
Output: Hello Hello Hello Hello HelloIlustració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.