Rozwijanie pętli

Rozwijanie pętli to technika transformacji pętli, która pomaga zoptymalizować czas wykonywania programu. Zasadniczo usuwamy lub ograniczamy iteracje. Rozwijanie pętli zwiększa prędkość programu poprzez eliminację instrukcji sterujących pętlą i instrukcji testujących pętlę. 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  
Ilustracja: Program 2 jest bardziej wydajny niż program 1, ponieważ w programie 1 należy sprawdzić wartość i i zwiększyć wartość i przy każdym okrążeniu pętli. Tak więc małe pętle, takie jak ta lub pętle, w których występuje stała liczba iteracji, można całkowicie rozwinąć, aby zmniejszyć obciążenie pętli.

Zalety:

  • Zwiększa efektywność programu.
  • Zmniejsza obciążenie pętli.
  • Jeżeli instrukcje w pętli nie są od siebie zależne, mogą być wykonywane równolegle.

Wady:

  • Zwiększony rozmiar kodu programu, co może być niepożądane.
  • Możliwe zwiększone wykorzystanie rejestru w pojedynczej iteracji do przechowywania zmiennych tymczasowych, co może zmniejszyć wydajność.
  • Oprócz bardzo małych i prostych kodów, rozwijane pętle zawierające gałęzie są nawet wolniejsze niż rekurencje.
Odniesienie: https://en.wikipedia.org/wiki/Loop_unrolling Utwórz quiz