פתיחת לולאה

פתיחת לולאה היא טכניקת טרנספורמציה של לולאה המסייעת לייעל את זמן הביצוע של תוכנית. אנחנו בעצם מסירים או מצמצמים איטרציות. פתיחת לולאה מגבירה את מהירות התוכנית על ידי ביטול הוראות בקרת לולאה והוראות בדיקת לולאה. תוכנית 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 צור חידון