// 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 има нужда да се проверява стойността на i и да се увеличава стойността на i всеки път, когато се обикаля цикълът. Така че малки цикли като този или цикли, при които има включен фиксиран брой итерации, могат да бъдат разгърнати напълно, за да се намали натоварването на цикъла.
Предимства:
- Повишава ефективността на програмата.
- Намалява разходите за цикъл.
- Ако изразите в цикъл не зависят един от друг, те могат да се изпълняват паралелно.
Недостатъци:
- Увеличен размер на програмния код, който може да бъде нежелан.
- Възможно повишено използване на регистър в една итерация за съхраняване на временни променливи, което може да намали производителността.
- Освен много малки и прости кодове, развитите цикли, които съдържат разклонения, са дори по-бавни от рекурсиите.