Лооп Унроллинг

Одмотавање петље је техника трансформације петље која помаже да се оптимизује време извршавања програма. У основи уклањамо или смањујемо итерације. Одмотавање петље повећава брзину програма елиминисањем инструкција за контролу петље и инструкција за тестирање петље. Програм 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 постоји потреба да се провери вредност и и повећа вредност и сваки пут око петље. Тако да се мале петље попут ове или петље у којима је укључен фиксни број итерација могу у потпуности одмотати како би се смањиле оптерећење петље.

Предности:

  • Повећава ефикасност програма.
  • Смањује оптерећење петље.
  • Ако наредбе у петљи не зависе једна од друге, могу се извршавати паралелно.

Недостаци:

  • Повећана величина програмског кода што може бити непожељно.
  • Могућа повећана употреба регистра у једној итерацији за складиштење привремених променљивих које могу смањити перформансе.
  • Осим врло малих и једноставних кодова, одмотане петље које садрже гране су чак и спорије од рекурзија.
Референца: хттпс://ен.википедиа.орг/вики/Лооп_унроллинг Креирај квиз