logo

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('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 
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