logo

Cilpas atritināšana

Cilpas atritināšana ir cilpas pārveidošanas paņēmiens, kas palīdz optimizēt programmas izpildes laiku. Mēs pamatā noņemam vai samazinām iterācijas. Cilpas atritināšana palielina programmas ātrumu, novēršot cilpas vadības norādījumus un cilpas pārbaudes norādījumus. 1. programma: 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; }  
2. programma: 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 
Ilustrācija: 2. programma ir efektīvāka par programmu 1, jo 1. programmā ir jāpārbauda i vērtība un jāpalielina i vērtība katru reizi cikla laikā. Tātad tādas mazas cilpas kā šī vai cilpas, kurās ir iesaistīts fiksēts atkārtojumu skaits, var pilnībā atritināt, lai samazinātu cilpas izmaksas.

Priekšrocības:

  • Palielina programmas efektivitāti.
  • Samazina cilpas virs izmaksas.
  • Ja cilpas paziņojumi nav atkarīgi viens no otra, tos var izpildīt paralēli.

Trūkumi:

  • Palielināts programmas koda lielums, kas var būt nevēlams.
  • Iespējama palielināta reģistra izmantošana vienā iterācijā, lai saglabātu pagaidu mainīgos, kas var samazināt veiktspēju.
  • Neatkarīgi no ļoti maziem un vienkāršiem kodiem atritinātās cilpas, kas satur zarus, ir pat lēnākas nekā rekursijas.
Atsauce: https://en.wikipedia.org/wiki/Loop_unrolling