logo

بسط الحلقة

إن فتح الحلقة هو أسلوب تحويل حلقة يساعد على تحسين وقت تنفيذ البرنامج. نقوم بشكل أساسي بإزالة التكرارات أو تقليلها. يؤدي فتح الحلقة إلى زيادة سرعة البرنامج عن طريق إلغاء تعليمات التحكم في الحلقة وتعليمات اختبار الحلقة. البرنامج 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; }  
البرنامج 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 في كل مرة حول الحلقة. لذلك يمكن فتح حلقات صغيرة مثل هذه أو الحلقات التي تحتوي على عدد ثابت من التكرارات بالكامل لتقليل الحمل الزائد للحلقة.

المزايا:

  • يزيد من كفاءة البرنامج.
  • يقلل من الحمل الزائد للحلقة.
  • إذا كانت العبارات الموجودة في الحلقة لا تعتمد على بعضها البعض، فيمكن تنفيذها بالتوازي.

العيوب:

  • زيادة حجم رمز البرنامج الذي يمكن أن يكون غير مرغوب فيه.
  • احتمال زيادة استخدام التسجيل في تكرار واحد لتخزين المتغيرات المؤقتة مما قد يقلل من الأداء.
  • وبصرف النظر عن الرموز الصغيرة والبسيطة جدًا، فإن الحلقات التي تحتوي على فروع تكون أبطأ من التكرارات.
مرجع: https://en.wikipedia.org/wiki/Loop_unrolling