// 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; }
Ohjelma 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 HelloKuva: Ohjelma 2 on tehokkaampi kuin ohjelma 1, koska ohjelmassa 1 on tarve tarkistaa i:n arvo ja kasvattaa i:n arvoa joka kerta silmukan ympäri. Joten tällaiset pienet silmukat tai silmukat, joissa on kiinteä määrä iteraatioita, voidaan rullata kokonaan auki silmukan ylikuormituksen vähentämiseksi.
Edut:
- Lisää ohjelman tehokkuutta.
- Vähentää silmukan ylärajaa.
- Jos silmukan lauseet eivät ole riippuvaisia toisistaan, ne voidaan suorittaa rinnakkain.
Haitat:
- Suurentunut ohjelmakoodin koko, mikä voi olla ei-toivottua.
- Mahdollista lisääntynyt rekisterin käyttö yhdessä iteraatiossa tilapäisten muuttujien tallentamiseen, mikä saattaa heikentää suorituskykyä.
- Hyvin pieniä ja yksinkertaisia koodeja lukuun ottamatta haaroja sisältävät auki rullatut silmukat ovat jopa hitaampia kuin rekursiot.