logo

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('Hellon'); //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('Hellon');  printf('Hellon');  printf('Hellon');  printf('Hellon');  printf('Hellon');  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