ההבדל בין כריכה סטטית ודינמית

מְחַבֵּר: Laura McKinney
תאריך הבריאה: 1 אַפּרִיל 2021
תאריך עדכון: 5 מאי 2024
Anonim
Difference between Static & Dynamic Library | [Linux Programming #3]
וִידֵאוֹ: Difference between Static & Dynamic Library | [Linux Programming #3]

תוֹכֶן


כריכת קשר של 'הגדרת פונקציה' ל'שיחת פונקציה 'או ​​אסוציאציה של' ערך 'ל'משתנה', נקראת 'מחייב'. במהלך ההרכבה, לכל 'הגדרת פונקציה' ניתנת כתובת זיכרון; ברגע ששיחות פונקציות נעשות, השליטה בביצוע התוכנית עוברת לכתובת הזיכרון ההיא ומקבלת את קוד הפונקציה המאוחסן באותו מיקום, זהו הכריכה של 'שיחת פונקציה' ל'הגדרת פונקציה '. ניתן לסווג את הכריכה כ'כריכה סטטית 'ו'כריכה דינמית'.

אם זה כבר ידוע לפני זמן הריצה, איזו פונקציה תוטל או איזה ערך מוקצה למשתנה, אז זה 'כריכה סטטית'. אם זה נודע בזמן ההפעלה, זה נקרא 'כריכה דינמית'.

  1. טבלת השוואה
  2. הגדרה
  3. הבדלים עיקריים
  4. סיכום

טבלת השוואה:

בסיס להשוואהכריכה סטטיתכריכה דינמית
אירוע אירועאירועים המתרחשים בזמן קומפילציה הם "כריכה סטטית".
אירועים המתרחשים בזמן ריצה הם "כריכה דינמית".
מידעכל המידע הדרוש כדי להתקשר לפונקציה ידוע בזמן ההרכבה.כל המידע שצריך להתקשר לפונקציה מתוודע בזמן ריצה.
יתרוןיעילות.גמישות.
זמןביצוע מהיר.ביצוע איטי.
שם חלופיכריכה מוקדמת.כריכה מאוחרת.
דוגמאשיחת פונקציה עמוסה יתר, מפעילי עומס יתר.פונקציה וירטואלית ב- C ++, שיטות עוקפות בג'אווה.

הגדרות של עקידה סטטית

כאשר המהדר מאשר את כל המידע הדרוש לקריאה לפונקציה או את כל ערכי המשתנים בזמן הקומפילציה, זה נקרא "כריכה סטטית“. מכיוון שכל המידע הנדרש ידוע לפני זמן ריצה, הוא מגביר את יעילות התוכנית, והוא גם משפר את מהירות ביצוע התוכנית.


כריכה סטטית הופכת את התוכנית ליעילה מאוד, אך היא פוסלת את גמישות התוכנית, מכיוון ש'ערכי המשתנה 'ו'קריאת פונקציות' מוגדרים מראש בתוכנית. כריכה סטטית מיושמת בתוכנית בזמן הקידוד.

עומס יתר על פונקציה או של מפעיל הם הדוגמה לפולימורפיזם בזמן קומפילציה, כלומר כריכה סטטית.

יישום של כריכה סטטית ב- C ++ עם דוגמא לעומס יתר

# כלול שימוש במרחב השמות std; עומס בכיתה {int a, b; ציבורי: עומס int (int x) {// פונקצית עומס ראשונה (). a = x; cout << "הערך של x הוא" <פונקציה (); // ההצהרה שלעיל מחליטה לאיזו פונקציית כיתות יש להפעיל. p = & d1; // Vlaue של המצביע משתנה. p-> פונקציה (); // ההצהרה שלעיל מחליטה לאיזו פונקציית כיתות יש להפעיל. p = & d2; // שוב הערך של שינויים המצביע. p-> פונקציה (); // ההצהרה שלעיל מחליטה לאיזו פונקציית כיתות יש להפעיל. להחזיר 0; }

כאן הערך של המצביע משתנה ככל שהתוכנית נמצאת בביצוע וערך המצביע מחליט לאיזו פונקציית כיתה תוטל. אז הנה, המידע מסופק בזמן ריצה, לוקח זמן לחייב את הנתונים שמאטים את הביצוע.


  1. אירועים המתרחשים בזמן קומפילציה כמו, קוד פונקציה משויך לשיחת פונקציה או להקצאת ערך למשתנה, נקראים סטטי / התחייבות מוקדמת. נהפוך הוא, כאשר משימות אלה מבוצעות בזמן ריצה, הן נקראות Binding דינמי / מאוחר.
  2. 'יעילות' עולה בכריכה סטטית, מכיוון שכל הנתונים נאספים לפני הביצוע. אבל בכריכה דינמית, הנתונים נרכשים בזמן ריצה, כך שנוכל להחליט איזה ערך להקצות משתנה ואיזו פונקציה להפעיל בזמן ריצה זה הופך את הביצוע ל"גמיש ".
  3. 'כריכה סטטית' הופכת את ביצוע התוכנית ל'מהירה יותר 'מכיוון שכל הנתונים הדרושים להפעלת תוכנית ידועים לפני ביצועם. ב'כריכה דינמית 'נתונים הדרושים לביצוע תוכנית ידועים למהדר בזמן הביצוע שלוקח זמן לאגד ערכים למזהים; מכאן שהיא הופכת את ביצוע התוכנית לאטי יותר.
  4. כריכה סטטית נקראת גם כריכה מוקדמת מכיוון שקוד הפונקציה משויך לשיחת פונקציה בזמן הקומפילציה, שהיא מוקדמת יותר מהכריכה הדינמית בה קוד הפונקציה משויך לשיחת פונקציה בזמן ריצה ומכאן היא נקראת גם כריכה מאוחרת.

סיכום:

עם זאת, אנו מסיקים כי כאשר יש לנו ידע קודם בערכי שיחות משתנה ותפקוד, אנו מיישמים את הכריכה הסטטית. לעומת זאת, בכריכה דינאמית, אנו מספקים את כל המידע בזמן הביצוע.