logo

Розгортання петлі

Розгортання циклу — це техніка перетворення циклу, яка допомагає оптимізувати час виконання програми. Ми в основному видаляємо або зменшуємо ітерації. Розгортання циклу збільшує швидкість програми, усуваючи інструкції керування циклом і інструкції тестування циклу. Програма 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; }  
Програма 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 
Ілюстрація: Програма 2 ефективніша за програму 1, тому що в програмі 1 потрібно перевіряти значення i та збільшувати значення i кожного разу в циклі. Таким чином, невеликі цикли, як цей, або цикли з фіксованою кількістю ітерацій можуть бути повністю розгорнуті, щоб зменшити накладні витрати циклу.

Переваги:

  • Підвищує ефективність програми.
  • Зменшує витрати циклу.
  • Якщо оператори в циклі не залежать один від одного, вони можуть виконуватися паралельно.

Недоліки:

  • Збільшений розмір програмного коду, що може бути небажаним.
  • Можливе збільшення використання реєстру в одній ітерації для зберігання тимчасових змінних, що може знизити продуктивність.
  • Крім дуже маленьких і простих кодів, розгорнуті цикли, які містять гілки, навіть повільніші, ніж рекурсії.
Посилання: https://en.wikipedia.org/wiki/Loop_unrolling