logo

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('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 Hello 
Illustrazione: 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.
Riferimento: https://en.wikipedia.org/wiki/Loop_unrolling