// 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; }
Program 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İllüstrasyon: Program 2, program 1'den daha verimlidir çünkü program 1'de i'nin değerinin kontrol edilmesi ve döngü boyunca her defasında i'nin değerinin arttırılması gerekir. Bunun gibi küçük döngüler veya sabit sayıda yinelemenin söz konusu olduğu döngüler, döngü yükünü azaltmak için tamamen açılabilir.
Avantajları:
- Programın verimliliğini artırır.
- Döngü yükünü azaltır.
- Döngüdeki ifadeler birbirine bağımlı değilse paralel olarak çalıştırılabilirler.
Dezavantajları:
- İstenmeyen şekilde artan program kodu boyutu.
- Performansı düşürebilecek geçici değişkenleri depolamak için tek bir yinelemede yazmacın olası artan kullanımı.
- Çok küçük ve basit kodların dışında, dallar içeren açılmamış döngüler özyinelemelerden bile daha yavaştır.