// 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: 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توضيح: يعد البرنامج 2 أكثر كفاءة من البرنامج 1 لأنه في البرنامج 1 هناك حاجة للتحقق من قيمة i وزيادة قيمة i في كل مرة حول الحلقة. لذلك يمكن فتح حلقات صغيرة مثل هذه أو الحلقات التي تحتوي على عدد ثابت من التكرارات بالكامل لتقليل الحمل الزائد للحلقة.
المزايا:
- يزيد من كفاءة البرنامج.
- يقلل من الحمل الزائد للحلقة.
- إذا كانت العبارات الموجودة في الحلقة لا تعتمد على بعضها البعض، فيمكن تنفيذها بالتوازي.
العيوب:
- زيادة حجم رمز البرنامج الذي يمكن أن يكون غير مرغوب فيه.
- احتمال زيادة استخدام التسجيل في تكرار واحد لتخزين المتغيرات المؤقتة مما قد يقلل من الأداء.
- وبصرف النظر عن الرموز الصغيرة والبسيطة جدًا، فإن الحلقات التي تحتوي على فروع تكون أبطأ من التكرارات.