الفرق بين التجليد الثابت والديناميكي

مؤلف: Laura McKinney
تاريخ الخلق: 1 أبريل 2021
تاريخ التحديث: 5 قد 2024
Anonim
The Difference Between Static & Dynamic Stretching Explained
فيديو: The Difference Between Static & Dynamic Stretching Explained

المحتوى


يسمى الربط "لتعريف الوظيفة" بـ "استدعاء دالة" أو ارتباط "قيمة" بـ "متغير" ، "الربط". أثناء التجميع ، يتم إعطاء كل "تعريف للوظيفة" عنوان ذاكرة ؛ بمجرد أن يتم استدعاء الوظيفة ، ينتقل التحكم في تنفيذ البرنامج إلى عنوان الذاكرة هذا وينفذ رمز الوظيفة المخزن في ذلك الموقع ، وهذا هو الربط بين "استدعاء الوظيفة" و "تعريف الوظيفة". يمكن تصنيف التجليد على أنه "رابط ثابت" و "ربط ديناميكي".

إذا كانت معروفة بالفعل قبل وقت التشغيل ، ما هي الوظيفة التي سيتم التذرع بها أو ما هي القيمة التي يتم تخصيصها لمتغير ، فهذا يعني أنه "رابط ثابت". إذا كان الأمر يتعلق بمعرفة وقت التشغيل ، فسيطلق عليه "الربط الديناميكي".

  1. رسم بياني للمقارنة
  2. تعريف
  3. الاختلافات الرئيسية
  4. خاتمة

رسم بياني للمقارنة:

أساس للمقارنةملزم ثابتالربط الديناميكي
حدث الحدثالأحداث التي تحدث في وقت الترجمة هي "الربط الثابت".
الأحداث التي تحدث في وقت التشغيل هي "الربط الديناميكي".
معلوماتجميع المعلومات اللازمة لاستدعاء وظيفة معروفة في وقت الترجمة.جميع المعلومات تحتاج إلى استدعاء وظيفة تعرف في وقت التشغيل.
أفضليةكفاءة.المرونة.
زمنتنفيذ سريع.التنفيذ البطيء.
أسم بديلالربط المبكر.ملزم في وقت متأخر.
مثالاستدعاء وظيفة overloaded ، مشغلي overloaded.وظيفة افتراضية في C ++ ، طرق تجاوز في جافا.

تعاريف التجليد الثابت

عندما يعترف المحول البرمجي بكافة المعلومات المطلوبة لاستدعاء دالة أو كل قيم المتغيرات أثناء وقت الترجمة ، فإنه يطلق عليه "ملزمة ثابتة". نظرًا لأن جميع المعلومات المطلوبة معروفة قبل وقت التشغيل ، فإنها تزيد من كفاءة البرنامج ، كما تعمل على تحسين سرعة تنفيذ البرنامج.


تعمل Static Binding على جعل البرنامج فعالًا للغاية ، ولكنه يرفض مرونة البرنامج ، لأن "قيم المتغير" و "استدعاء الوظيفة" معرّفة مسبقًا في البرنامج. يتم تطبيق الربط الثابت في برنامج في وقت الترميز.

الحمل الزائد لوظيفة أو عامل ما هو مثال تعدد الأشكال المترجم ، أي التجليد الثابت.

تنفيذ الربط الثابت في C ++ مع مثال الحمولة الزائدة

#تتضمن استخدام اسم للمحطة؛ التحميل الزائد للفئة {int a، b؛ public: int load (int x) {// first load () function. و= س. cout << "قيمة x هي" <وظي ()؛ // البيان أعلاه يقرر ما هي وظيفة الفئات التي يجب التذرع بها. ص = & D1. // Vlaue يتغير المؤشر. P-> وظي ()؛ // البيان أعلاه يقرر ما هي وظيفة الفئات التي يجب التذرع بها. ص = & D2. // مرة أخرى vlaue من التغييرات المؤشر. P-> وظي ()؛ // البيان أعلاه يقرر ما هي وظيفة الفئات التي يجب التذرع بها. عودة 0 ؛ }

هنا تتغير قيمة المؤشر حيث أن البرنامج قيد التنفيذ وقيمة المؤشر تقرر وظيفة الفئة التي سيتم استدعاءها. لذلك ، يتم توفير المعلومات في وقت التشغيل ، ويستغرق الأمر وقتًا لربط البيانات التي تؤدي إلى إبطاء التنفيذ.


  1. الأحداث التي تحدث في وقت الترجمة ، مثل رمز الوظيفة يرتبط باستدعاء دالة أو تخصيص قيمة لمتغير ، يسمى "ثابت / مبكر الربط". على العكس من ذلك ، عندما يتم إنجاز هذه المهام أثناء وقت التشغيل ، يطلق عليها "الربط الديناميكي / المتأخر".
  2. تزيد "الكفاءة" في التجليد الثابت ، حيث يتم جمع جميع البيانات قبل التنفيذ. ولكن في Binding الديناميكي ، يتم الحصول على البيانات في وقت التشغيل حتى نتمكن من تحديد القيمة التي يجب تعيينها لمتغير وما هي الوظيفة التي يمكن استدعاءها في وقت التشغيل مما يجعل التنفيذ "مرن".
  3. "الربط الثابت" يجعل تنفيذ البرنامج "أسرع" حيث أن جميع البيانات اللازمة لتنفيذ البرنامج معروفة قبل التنفيذ. في البيانات "الملزمة الديناميكية" اللازمة لتنفيذ برنامج ما ، يعرف المترجم في وقت التنفيذ الذي يستغرق وقتًا لربط القيم بالمُعرّفات ؛ وبالتالي ، فإنه يجعل تنفيذ البرنامج أبطأ.
  4. يُطلق على الربط الثابت أيضًا الربط المبكر لأن رمز الوظيفة يرتبط باستدعاء الوظيفة خلال وقت الترجمة ، وهو أقدم من التجليد الديناميكي الذي يرتبط فيه رمز الوظيفة باستدعاء الوظيفة أثناء وقت التشغيل ، وبالتالي يُطلق عليه أيضًا الربط المتأخر.

خاتمة:

ومع ذلك ، فإننا نستنتج أنه عندما يكون لدينا معرفة مسبقة بقيم المتغيرات واستدعاء الوظيفة ، فإننا نطبق الارتباط الثابت. على العكس من ذلك ، في التجليد الديناميكي ، نحن نقدم جميع المعلومات في وقت التنفيذ.