// 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. program: 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Ábra: A 2. program hatékonyabb, mint az 1. program, mert az 1. programban ellenőrizni kell az i értékét, és a ciklus során minden alkalommal növelni kell az i értékét. Így az ehhez hasonló kis hurkokat vagy a rögzített számú iterációt tartalmazó hurkokat teljesen letekerhetjük, hogy csökkentsük a hurok többletköltségét.
Előnyök:
- Növeli a program hatékonyságát.
- Csökkenti a hurok terhelését.
- Ha a ciklusban lévő utasítások nem függenek egymástól, akkor párhuzamosan is végrehajthatók.
Hátrányok:
java string indexof
- Megnövekedett programkód mérete, ami nemkívánatos lehet.
- A regiszterek lehetséges fokozott használata egyetlen iterációban ideiglenes változók tárolására, amelyek csökkenthetik a teljesítményt.
- A nagyon kicsi és egyszerű kódoktól eltekintve az elágazásokat tartalmazó kigöngyölt hurkok még a rekurzióknál is lassabbak.