بسط الحلقة

إن فتح الحلقة هو أسلوب تحويل حلقة يساعد على تحسين وقت تنفيذ البرنامج. نقوم بشكل أساسي بإزالة التكرارات أو تقليلها. يؤدي فتح الحلقة إلى زيادة سرعة البرنامج عن طريق إلغاء تعليمات التحكم في الحلقة وتعليمات اختبار الحلقة. البرنامج 1: CPP
   // This program does not uses loop unrolling.   #include      int     main  (  void  )   {      for     (  int     i  =  0  ;     i   <  5  ;     i  ++  )      printf  (  'Hello  n  '  );     //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  (  'Hello  n  '  );      printf  (  'Hello  n  '  );      printf  (  'Hello  n  '  );      printf  (  'Hello  n  '  );      printf  (  'Hello  n  '  );      return     0  ;   }      
Output:
Hello Hello Hello Hello Hello  
توضيح: يعد البرنامج 2 أكثر كفاءة من البرنامج 1 لأنه في البرنامج 1 هناك حاجة للتحقق من قيمة i وزيادة قيمة i في كل مرة حول الحلقة. لذلك يمكن فتح حلقات صغيرة مثل هذه أو الحلقات التي تحتوي على عدد ثابت من التكرارات بالكامل لتقليل الحمل الزائد للحلقة.

المزايا:

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

العيوب:

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