// 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 HelloIllustrasjon: Program 2 er mer effektivt enn program 1 fordi i program 1 er det behov for å sjekke verdien av i og øke verdien av i hver gang rundt sløyfen. Så små løkker som dette eller løkker hvor det er et fast antall iterasjoner kan rulles helt ut for å redusere løkken overhead.
Fordeler:
- Øker programmets effektivitet.
- Reduserer sløyfe overhead.
- Hvis setninger i loop ikke er avhengige av hverandre, kan de kjøres parallelt.
Ulemper:
- Økt programkodestørrelse som kan være uønsket.
- Mulig økt bruk av register i en enkelt iterasjon for å lagre midlertidige variabler som kan redusere ytelsen.
- Bortsett fra svært små og enkle koder er utrullede løkker som inneholder grener enda tregere enn rekursjoner.