// 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; }
Programul 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 HelloIlustrare: Programul 2 este mai eficient decât programul 1 deoarece în programul 1 este nevoie să se verifice valoarea lui i și să se incrementeze valoarea lui i de fiecare dată când se întocmește bucla. Deci, bucle mici ca aceasta sau bucle în care există un număr fix de iterații pot fi derulate complet pentru a reduce supraîncărcarea buclei.
Avantaje:
- Crește eficiența programului.
- Reduce supraîncărcarea buclei.
- Dacă instrucțiunile în buclă nu depind unele de altele, ele pot fi executate în paralel.
Dezavantaje:
- Mărimea codului de program mărită, care poate fi nedorită.
- Posibilă utilizare crescută a registrului într-o singură iterație pentru a stoca variabile temporare care pot reduce performanța.
- În afară de codurile foarte mici și simple, buclele desfășurate care conțin ramuri sunt chiar mai lente decât recursiunile.