// 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 programa: 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 HelloIliustracija: 2 programa yra efektyvesnė nei 1 programa, nes 1 programoje reikia patikrinti i reikšmę ir padidinti i reikšmę kiekvieną kartą ciklo metu. Taigi mažos kilpos, tokios kaip ši, arba kilpos, kuriose dalyvauja fiksuotas iteracijų skaičius, gali būti visiškai išvyniotos, kad būtų sumažinta kilpa.
Privalumai:
- Padidina programos efektyvumą.
- Sumažina kilpos viršų.
- Jei ciklo teiginiai nepriklauso vienas nuo kito, jie gali būti vykdomi lygiagrečiai.
Trūkumai:
- Padidėjęs programos kodo dydis, kuris gali būti nepageidautinas.
- Galimas didesnis registro naudojimas per vieną iteraciją laikiniems kintamiesiems saugoti, o tai gali sumažinti našumą.
- Be labai mažų ir paprastų kodų, išvyniotos kilpos, kuriose yra šakų, yra net lėtesnės nei rekursijos.