// 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 är mer effektivt än program 1 eftersom det i program 1 finns ett behov av att kontrollera värdet på i och öka värdet på i varje gång runt slingan. Så små slingor som denna eller slingor där det finns ett fast antal iterationer är inblandade kan rullas ut helt för att minska slingoverheaden.
Fördelar:
- Ökar programmets effektivitet.
- Minskar loop overhead.
- Om satser i loop inte är beroende av varandra kan de köras parallellt.
Nackdelar:
- Ökad programkodstorlek vilket kan vara oönskat.
- Möjlig ökad användning av register i en enda iteration för att lagra temporära variabler som kan minska prestandan.
- Bortsett från mycket små och enkla koder är utrullade loopar som innehåller grenar till och med långsammare än rekursioner.