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