Odmotavanje petlje

Odmotavanje petlje je tehnika transformacije petlje koja pomaže optimizirati vrijeme izvođenja programa. U osnovi uklanjamo ili smanjujemo iteracije. Odmotavanje petlje povećava brzinu programa eliminiranjem uputa za kontrolu petlje i uputa za testiranje petlje. Program 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  ;   }      
Program 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 Hello  
Ilustracija: Program 2 je učinkovitiji od programa 1 jer u programu 1 postoji potreba za provjerom vrijednosti i i povećanjem vrijednosti i svaki put u petlji. Dakle, male petlje poput ove ili petlje u kojima je uključen fiksni broj ponavljanja mogu se potpuno odmotati kako bi se smanjilo opterećenje petlje.

Prednosti:

  • Povećava učinkovitost programa.
  • Smanjuje opterećenje petlje.
  • Ako naredbe u petlji ne ovise jedna o drugoj, mogu se izvoditi paralelno.

Nedostaci:

  • Povećana veličina programskog koda što može biti nepoželjno.
  • Moguća povećana upotreba registra u jednoj iteraciji za pohranu privremenih varijabli što može smanjiti izvedbu.
  • Osim vrlo malih i jednostavnih kodova, odmotane petlje koje sadrže grane čak su sporije od rekurzija.
Referenca: https://en.wikipedia.org/wiki/Loop_unrolling Napravi kviz