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