Svolgimento del ciclo
Lo srotolamento del loop è una tecnica di trasformazione del loop che aiuta a ottimizzare il tempo di esecuzione di un programma. Fondamentalmente rimuoviamo o riduciamo le iterazioni. Lo srotolamento del loop aumenta la velocità del programma eliminando le istruzioni di controllo del loop e le istruzioni di test del loop. Programma 1: CPP
// This program does not uses loop unrolling. #include int main ( void ) { for ( int i = 0 ; i < 5 ; i ++ ) printf ( 'Hello n ' ); //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 ( 'Hello n ' ); printf ( 'Hello n ' ); printf ( 'Hello n ' ); printf ( 'Hello n ' ); printf ( 'Hello n ' ); 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.