// 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 HelloIlustrā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.