Odmotavanje petlje
Odmotavanje petlje je tehnika transformacije petlje koja pomaže optimizirati vrijeme izvođenja programa. U osnovi uklanjamo ili smanjujemo iteracije. Odmotavanje petlje povećava brzinu programa eliminiranjem uputa za kontrolu petlje i uputa za testiranje petlje. Program 1: CPP
// This program does not uses loop unrolling. #include int main ( void ) { for ( int i = 0 ; i < 5 ; i ++ ) printf ( 'Hello n ' ); //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 ( 'Hello n ' ); printf ( 'Hello n ' ); printf ( 'Hello n ' ); printf ( 'Hello n ' ); printf ( 'Hello n ' ); return 0 ; }
Output: Hello Hello Hello Hello HelloIlustracija: Program 2 je učinkovitiji od programa 1 jer u programu 1 postoji potreba za provjerom vrijednosti i i povećanjem vrijednosti i svaki put u petlji. Dakle, male petlje poput ove ili petlje u kojima je uključen fiksni broj ponavljanja mogu se potpuno odmotati kako bi se smanjilo opterećenje petlje.
Prednosti:
- Povećava učinkovitost programa.
- Smanjuje opterećenje petlje.
- Ako naredbe u petlji ne ovise jedna o drugoj, mogu se izvoditi paralelno.
Nedostaci:
- Povećana veličina programskog koda što može biti nepoželjno.
- Moguća povećana upotreba registra u jednoj iteraciji za pohranu privremenih varijabli što može smanjiti izvedbu.
- Osim vrlo malih i jednostavnih kodova, odmotane petlje koje sadrže grane čak su sporije od rekurzija.