// 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 HelloIlustrace: Program 2 je efektivnější než program 1, protože v programu 1 je potřeba kontrolovat hodnotu i a zvyšovat hodnotu i při každém cyklu smyčky. Takže malé smyčky, jako je tato, nebo smyčky, kde je zahrnut pevný počet iterací, lze úplně rozvinout, aby se snížila režie smyčky.
výhody:
- Zvyšuje efektivitu programu.
- Snižuje režii smyčky.
- Pokud příkazy ve smyčce na sobě nejsou závislé, lze je provádět paralelně.
Nevýhody:
- Zvětšená velikost programového kódu, což může být nežádoucí.
- Možné zvýšené využití registru v jedné iteraci pro ukládání dočasných proměnných, což může snížit výkon.
- Kromě velmi malých a jednoduchých kódů jsou rozvinuté smyčky, které obsahují větve, ještě pomalejší než rekurze.