// 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 HelloIllustration: Program 2 er mere effektivt end program 1, fordi der i program 1 er behov for at kontrollere værdien af i og øge værdien af i hver gang rundt i sløjfen. Så små løkker som denne eller løkker, hvor der er et fast antal iterationer involveret, kan rulles helt ud for at reducere løkkens overhead.
Fordele:
- Øger programmets effektivitet.
- Reducerer loop overhead.
- Hvis sætninger i loop ikke er afhængige af hinanden, kan de udføres parallelt.
Ulemper:
- Øget programkodestørrelse, hvilket kan være uønsket.
- Mulig øget brug af register i en enkelt iteration for at gemme midlertidige variabler, som kan reducere ydeevnen.
- Bortset fra meget små og enkle koder er udrullede løkker, der indeholder grene, endnu langsommere end rekursioner.