logo

Loop Unrolling

Silmukan purkaminen on silmukan muunnostekniikka, joka auttaa optimoimaan ohjelman suoritusajan. Pohjimmiltaan poistamme tai vähennämme iteraatioita. Silmukan purkaminen lisää ohjelman nopeutta poistamalla silmukan ohjauskäskyt ja silmukkatestiohjeet. Ohjelma 1: CPP
// 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 Hello 
Kuva: 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.
Viite: https://en.wikipedia.org/wiki/Loop_unrolling