स्थैतिक और गतिशील बंधन के बीच अंतर

लेखक: Laura McKinney
निर्माण की तारीख: 1 अप्रैल 2021
डेट अपडेट करें: 5 मई 2024
Anonim
जावा साक्षात्कार 04 - स्टेटिक बाइंडिंग बनाम डायनेमिक बाइंडिंग
वीडियो: जावा साक्षात्कार 04 - स्टेटिक बाइंडिंग बनाम डायनेमिक बाइंडिंग

विषय


एक 'फंक्शन डेफिनिशन' के बाइंडिंग एसोसिएशन को 'फंक्शन कॉल' या 'वैरिएबल को' वैरिएबल 'की एसोसिएशन' बाइंडिंग 'कहा जाता है। संकलन के दौरान, प्रत्येक 'फ़ंक्शन परिभाषा' को एक मेमोरी एड्रेस दिया जाता है; जैसे ही फ़ंक्शन कॉलिंग की जाती है, प्रोग्राम निष्पादन का नियंत्रण उस मेमोरी पते पर चला जाता है और उस स्थान पर निष्पादित फ़ंक्शन कोड संग्रहीत हो जाता है, यह 'फ़ंक्शन परिभाषा' के लिए 'फ़ंक्शन कॉल' की बाइंडिंग है। बाइंडिंग को 'स्टैटिक बाइंडिंग' और 'डायनेमिक बाइंडिंग' के रूप में वर्गीकृत किया जा सकता है।

यदि यह रनटाइम से पहले ही ज्ञात हो जाता है, कि कौन सा फ़ंक्शन इनवॉइस किया जाएगा या किसी वैरिएबल को क्या आवंटित किया जाता है, तो यह एक 'स्टैटिक बाइंडिंग' है। अगर यह रनटाइम पर पता चलता है, तो इसे 'डायनामिक बाइंडिंग' कहा जाता है।

  1. तुलना चार्ट
  2. परिभाषा
  3. मुख्य अंतर
  4. निष्कर्ष

तुलना चार्ट:

तुलना के लिए आधारस्थैतिक बंधनगतिशील बंधन
घटना की घटनासंकलन समय पर होने वाली घटनाएं "स्टेटिक बाइंडिंग" हैं।
रन टाइम पर होने वाली घटनाएँ "डायनेमिक बाइंडिंग" होती हैं।
जानकारीकिसी फ़ंक्शन को कॉल करने के लिए आवश्यक सभी जानकारी संकलन समय पर जानी जाती है।सभी सूचनाओं को किसी फ़ंक्शन को कॉल करने की आवश्यकता होती है जो कि रन टाइम पर पता चलती है।
लाभदक्षता।लचीलापन।
पहरतेजी से निष्पादन।धीमी गति से निष्पादन।
वैकल्पिक नामअर्ली बाइंडिंग।देर से बांधना।
उदाहरणअतिभारित फ़ंक्शन कॉल, अतिभारित ऑपरेटर।जावा में वर्चुअल फ़ंक्शन, जावा में ओवरराइड तरीके।

स्थैतिक बंधन की परिभाषाएँ

जब कंपाइलर किसी फ़ंक्शन को कॉल करने के लिए आवश्यक सभी सूचनाओं या संकलन समय के दौरान चर के सभी मूल्यों को स्वीकार करता है, तो इसे "कहा जाता है"स्थिर बंधन"। चूंकि रनटाइम से पहले सभी आवश्यक जानकारी ज्ञात है, यह कार्यक्रम की दक्षता को बढ़ाता है, और यह एक कार्यक्रम के निष्पादन की गति को भी बढ़ाता है।


स्टेटिक बाइंडिंग एक प्रोग्राम को बहुत कुशल बनाता है, लेकिन यह प्रोग्राम के लचीलेपन को कम करता है, क्योंकि 'वेरिएबल' और 'फंक्शन कॉलिंग' के मान प्रोग्राम में पूर्वनिर्धारित होते हैं। स्टैटिक बाइंडिंग को कोडिंग के समय एक कार्यक्रम में लागू किया जाता है।

किसी फ़ंक्शन या ऑपरेटर को ओवरलोड करना संकलन-समय के बहुरूपता का उदाहरण है, अर्थात स्थिर बंधन।

ओवरलोडिंग के उदाहरण के साथ C ++ में स्थैतिक बंधन का कार्यान्वयन

#शामिल नेमस्पेस एसटीडी का उपयोग करना; वर्ग अधिभार {int a, b; सार्वजनिक: int लोड (int x) {// पहला लोड () फ़ंक्शन। एक = एक्स; cout << "x का मान है" <funct (); // उपर्युक्त कथन यह तय करता है कि कौन सा वर्ग कार्य करना है। पी = & d1; // सूचक का परिवर्तन बदलता है। p-> funct (); // उपर्युक्त कथन यह तय करता है कि कौन सा वर्ग कार्य करना है। पी = और d2; // पुन: पॉइंटर पॉइंटर बदल जाता है। p-> funct (); // उपर्युक्त कथन यह तय करता है कि कौन सा वर्ग कार्य करना है। वापसी 0; }

यहाँ प्रोग्राम के निष्पादन के रूप में पॉइंटर के मूल्य में परिवर्तन होता है और पॉइंटर का मूल्य यह तय करता है कि किस वर्ग के कार्य को लागू किया जाएगा। तो यहाँ, जानकारी रन टाइम पर दी गई है, यह निष्पादन को धीमा करने वाले डेटा को बांधने में समय लेता है।


  1. संकलन समय पर होने वाली घटनाओं जैसे, एक फ़ंक्शन कोड एक फ़ंक्शन कॉल या किसी वैरिएबल के लिए असाइनमेंट के साथ जुड़ा हुआ है, स्थिर / प्रारंभिक बाइंडिंग कहा जाता है। इसके विपरीत, जब रनटाइम के दौरान इन कार्यों को पूरा किया जाता है, तो उन्हें डायनामिक / लेट बाइंडिंग कहा जाता है।
  2. स्थिर बाइंडिंग में 'दक्षता' बढ़ जाती है, क्योंकि निष्पादन से पहले सभी डेटा एकत्र किए जाते हैं। लेकिन डायनामिक बाइंडिंग में, डेटा रनटाइम पर अधिग्रहित किया जाता है, इसलिए हम यह तय कर सकते हैं कि किसी वैरिएबल को किस वैल्यू पर रखा जाए और रनटाइम के दौरान कौन सा फंक्शन इनवॉइस को 'लचीला' बनाए।
  3. ‘स्टेटिक बाइंडिंग 'किसी प्रोग्राम के निष्पादन को' तेज 'बनाता है क्योंकि किसी प्रोग्राम को निष्पादित करने के लिए आवश्यक सभी डेटा को निष्पादन से पहले जाना जाता है। किसी प्रोग्राम को निष्पादित करने के लिए आवश्यक program डायनेमिक बाइंडिंग ’डेटा को कंपाइलर को निष्पादन के समय ज्ञात किया जाता है जो पहचानकर्ताओं के लिए मानों को बांधने में समय लेता है; इसलिए, यह प्रोग्राम निष्पादन को धीमा बनाता है।
  4. स्टेटिक बाइंडिंग को शुरुआती बाइंडिंग भी कहा जाता है क्योंकि फ़ंक्शन कोड संकलन समय के दौरान फ़ंक्शन कॉल के साथ जुड़ा हुआ है, जो कि गतिशील बाइंडिंग से पहले है जिसमें फ़ंक्शन कोड रनटाइम के दौरान फ़ंक्शन कॉल के साथ जुड़ा हुआ है इसलिए इसे देर से बाध्यकारी भी कहा जाता है।

निष्कर्ष:

हालांकि, हम यह निष्कर्ष निकालते हैं कि जब हमें चर और फ़ंक्शन कॉलिंग के मूल्यों का पूर्व ज्ञान होता है, तो हम स्थैतिक बंधन को लागू करते हैं। इसके विपरीत, गतिशील बंधन में, हम निष्पादन के समय सभी जानकारी प्रदान करते हैं।