// 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; }
Programma 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 HelloIllustrazione: Il programma 2 è più efficiente del programma 1 perché nel programma 1 è necessario controllare il valore di i e incrementare il valore di i ogni volta che si esegue il ciclo. Quindi piccoli loop come questo o loop in cui è coinvolto un numero fisso di iterazioni possono essere srotolati completamente per ridurre il sovraccarico del loop.
Vantaggi:
- Aumenta l'efficienza del programma.
- Riduce il sovraccarico del ciclo.
- Se le istruzioni in loop non dipendono l'una dall'altra possono essere eseguite in parallelo.
Svantaggi:
- Maggiore dimensione del codice del programma che può essere indesiderabile.
- Possibile maggiore utilizzo del registro in una singola iterazione per archiviare variabili temporanee che potrebbero ridurre le prestazioni.
- A parte i codici molto piccoli e semplici, i cicli srotolati che contengono rami sono persino più lenti delle ricorsioni.