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