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

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

Переваги:

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

Недоліки:

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