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

Предности:

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

Недостаци:

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