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