// 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 HelloIl·lustració: El programa 2 és més eficient que el programa 1 perquè al programa 1 hi ha una necessitat de comprovar el valor de i i augmentar el valor de i cada cop que fa el cicle. Així que petits bucles com aquest o bucles on hi ha un nombre fix d'iteracions es poden desenrotllar completament per reduir la sobrecàrrega del bucle.
Avantatges:
- Augmenta l'eficiència del programa.
- Redueix la sobrecàrrega del bucle.
- Si les instruccions en bucle no depenen entre si, es poden executar en paral·lel.
Inconvenients:
- Augment de la mida del codi del programa que pot ser indesitjable.
- Possible augment de l'ús del registre en una sola iteració per emmagatzemar variables temporals que poden reduir el rendiment.
- A part de codis molt petits i senzills, els bucles desenrotllats que contenen branques són fins i tot més lents que les recursions.