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