Odvijanje zanke

Odvijanje zanke je tehnika transformacije zanke, ki pomaga optimizirati čas izvajanja programa. V bistvu odstranimo ali zmanjšamo ponovitve. Odvijanje zanke poveča hitrost programa z odpravo navodil za nadzor zanke in navodil za testiranje zanke. 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činkovitejši od programa 1, ker je v programu 1 treba preveriti vrednost i in povečati vrednost i vsakič, ko kroži po zanki. Majhne zanke, kot je ta, ali zanke, pri katerih je vključeno določeno število ponovitev, je mogoče popolnoma odviti, da zmanjšate stroške zanke.

Prednosti:

  • Poveča učinkovitost programa.
  • Zmanjša stroške zanke.
  • Če stavki v zanki niso odvisni drug od drugega, se lahko izvajajo vzporedno.

Slabosti:

  • Povečana velikost programske kode, ki je lahko nezaželena.
  • Možna povečana uporaba registra v eni ponovitvi za shranjevanje začasnih spremenljivk, kar lahko zmanjša zmogljivost.
  • Razen zelo majhnih in preprostih kod so razvite zanke, ki vsebujejo veje, celo počasnejše od rekurzij.
Referenca: https://en.wikipedia.org/wiki/Loop_unrolling Ustvari kviz