logo

Déroulement de la boucle

Le déroulement de boucle est une technique de transformation de boucle qui permet d'optimiser le temps d'exécution d'un programme. En gros, nous supprimons ou réduisons les itérations. Le déroulement de la boucle augmente la vitesse du programme en éliminant les instructions de contrôle de boucle et les instructions de test de boucle. Programme 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; }  
Programme 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 
Illustration: Le programme 2 est plus efficace que le programme 1 car dans le programme 1, il est nécessaire de vérifier la valeur de i et d'incrémenter la valeur de i à chaque tour de boucle. So small loops like this or loops where there is fixed number of iterations are involved can be unrolled completely to reduce the loop overhead.

Avantages :

  • Augmente l’efficacité du programme.
  • Réduit la surcharge de boucle.

Inconvénients :

  • Utilisation accrue possible du registre en une seule itération pour stocker des variables temporaires, ce qui peut réduire les performances.
Référence: https://en.wikipedia.org/wiki/Loop_unrolling