अनुदेश पथ की लंबाई: Difference between revisions

From Vigyanwiki
No edit summary
No edit summary
Line 1: Line 1:
{{Short description|Number of machine code instructions required to execute a section of a computer program}}
{{Short description|Number of machine code instructions required to execute a section of a computer program}}
[[कंप्यूटर प्रदर्शन]] में, '''अनुदेश पथ की लंबाई''' [[कंप्यूटर प्रोग्राम]] के अनुभाग को निष्पादित करने के लिए आवश्यक [[मशीन कोड]] अनुदेशों की संख्या है। पूर्ण प्रोग्राम के लिए कुल पथ लंबाई को किसी विशेष [[कंप्यूटर हार्डवेयर]] पर [[कलन विधि|एल्गोरिदम]] के प्रदर्शन का माप माना जा सकता है। साधारण नियमबद्ध अनुदेश की पथ लंबाई सामान्यतः 2 के समान मानी जाती है, प्रथम अनुदेश अपेक्षा करने के लिए एवं दूसरा अनुदेश विशेष स्थिति संतुष्ट होने पर शाखा लेने के लिए होता है। पथ की लंबाई निर्धारित करते समय प्रत्येक अनुदेश को निष्पादित करने में लगने वाले समय को सामान्यतः ध्यान में नहीं रखा जाता है एवं इसलिए पथ की लंबाई किसी भी अर्थ में पूर्ण होने के अतिरिक्त सापेक्ष प्रदर्शन का संकेत मात्र है।
[[कंप्यूटर प्रदर्शन|कंप्यूटर परफॉरमेंस]] में, '''इंस्ट्रक्शन पाथ लेंथ''' [[कंप्यूटर प्रोग्राम]] के सेक्शन को निष्पादित करने के लिए आवश्यक [[मशीन कोड]] अनुदेशों की संख्या है। पूर्ण प्रोग्राम के लिए कुल पथ लंबाई को किसी विशेष [[कंप्यूटर हार्डवेयर]] पर [[कलन विधि|एल्गोरिदम]] के प्रदर्शन का माप माना जा सकता है। साधारण नियमबद्ध अनुदेश की पथ लंबाई सामान्यतः 2 के समान मानी जाती है, प्रथम अनुदेश अपेक्षा करने के लिए एवं दूसरा अनुदेश विशेष स्थिति संतुष्ट होने पर शाखा लेने के लिए होता है। पथ की लंबाई निर्धारित करते समय प्रत्येक अनुदेश को निष्पादित करने में लगने वाले समय को सामान्यतः ध्यान में नहीं रखा जाता है एवं इसलिए पथ की लंबाई किसी भी अर्थ में पूर्ण होने के अतिरिक्त सापेक्ष प्रदर्शन का संकेत मात्र है।


[[बेंचमार्क प्रोग्राम]] निष्पादित करते समय, अधिकांश अनुदेश पथ की लंबाई सामान्यतः प्रोग्राम के आंतरिक लूप के अंदर होती है।
[[बेंचमार्क प्रोग्राम]] निष्पादित करते समय, अधिकांश इंस्ट्रक्शन पाथ लेंथ सामान्यतः प्रोग्राम के आंतरिक लूप के अंदर होती है।


[[कैश (कंप्यूटिंग)|कैश]] के प्रारम्भ से पूर्व, पथ की लंबाई चलने के समय का अनुमान था, किन्तु कैश के साथ आधुनिक सीपीयू में, यह अधिक त्रुटिपूर्ण अनुमान हो सकता है, जब डेटा कैश में नहीं होता है तो कुछ लोड अनुदेशों में सैकड़ों चक्र लगते हैं, या कैश में होने पर तीव्रता बढ़ती हैं (यहां तक ​​कि लूप में दूसरे राउंड में भी वही निर्देश होते हैं)।
[[कैश (कंप्यूटिंग)|कैश]] के प्रारम्भ से पूर्व, पथ की लंबाई चलने के समय का अनुमान था, किन्तु कैश के साथ आधुनिक सीपीयू में, यह अधिक त्रुटिपूर्ण अनुमान हो सकता है, जब डेटा कैश में नहीं होता है तो कुछ लोड अनुदेशों में सैकड़ों चक्र लगते हैं, या कैश में होने पर तीव्रता बढ़ती हैं (यहां तक ​​कि लूप में दूसरे राउंड में भी वही निर्देश होते हैं)।


==असेंबली प्रोग्राम==
==असेंबली प्रोग्राम==
चूँकि, सामान्यतः, असेंबली अनुदेशों एवं मशीन अनुदेशों के मध्य संबंध होता है, अनुदेश पथ की लंबाई को प्रायः किसी फ़ंक्शन या कोड के विशेष अनुभाग को निष्पादित करने के लिए आवश्यक असेंबली अनुदेशों की संख्या के रूप में लिया जाता है। 1,000 प्रविष्टियों की [[छँटाई|अवर्गीकृत]] सूची पर साधारण लुकअप टेबल निष्पादित करने के लिए संभवतः 2,000 मशीन अनुदेशों की आवश्यकता हो सकती है (औसतन, इनपुट मानों का समान वितरण मानते हुए), जबकि [[बाइनरी खोज एल्गोरिदम|बाइनरी शोध एल्गोरिदम]] का उपयोग करके सॉर्टिंग सूची पर समान लुकअप करने के लिए केवल 40 मशीन अनुदेशों की आवश्यकता हो सकती है, जो अधिक महत्वपूर्ण बचत है। अनुदेश पथ की लंबाई के संदर्भ में व्यक्त, इस [[सॉफ्टवेयर मीट्रिक]] को इस उदाहरण में 50 के बड़े कारक से कम किया जाएगा{{snd}}यही कारण है कि कम पथ लंबाई की आवश्यकता वाले एल्गोरिदम के श्रेष्ठ विकल्प की अपेक्षा में वास्तविक अनुदेश समय माध्यमिक विचार हो सकता है।
चूँकि, सामान्यतः, असेंबली अनुदेशों एवं मशीन अनुदेशों के मध्य संबंध होता है, इंस्ट्रक्शन पाथ लेंथ को प्रायः किसी फ़ंक्शन या कोड के विशेष सेक्शन को निष्पादित करने के लिए आवश्यक असेंबली अनुदेशों की संख्या के रूप में लिया जाता है। 1,000 प्रविष्टियों की [[छँटाई|अवर्गीकृत]] सूची पर साधारण लुकअप टेबल निष्पादित करने के लिए संभवतः 2,000 मशीन अनुदेशों की आवश्यकता हो सकती है (औसतन, इनपुट मानों का समान वितरण मानते हुए), जबकि [[बाइनरी खोज एल्गोरिदम|बाइनरी शोध एल्गोरिदम]] का उपयोग करके सॉर्टिंग सूची पर समान लुकअप करने के लिए केवल 40 मशीन अनुदेशों की आवश्यकता हो सकती है, जो अधिक महत्वपूर्ण बचत है। इंस्ट्रक्शन पाथ लेंथ के संदर्भ में व्यक्त, इस [[सॉफ्टवेयर मीट्रिक]] को इस उदाहरण में 50 के बड़े कारक से कम किया जाएगा{{snd}}यही कारण है कि कम पथ लंबाई की आवश्यकता वाले एल्गोरिदम के श्रेष्ठ विकल्प की अपेक्षा में वास्तविक अनुदेश समय माध्यमिक विचार हो सकता है।


किसी असेंबली लैंग्वेज प्रोग्राम की अनुदेश पथ की लंबाई सामान्यतः उस प्रोग्राम के लिए कोड की स्रोत लाइनों की संख्या से अधिक भिन्न होती है, क्योंकि अनुदेश पथ की लंबाई में दिए गए इनपुट के लिए निष्पादित नियंत्रण प्रवाह में केवल कोड सम्मिलित होता है एवं इसमें वह कोड सम्मिलित नहीं होता है जो विशेष इनपुट, या पहुंच योग्य कोड के लिए प्रासंगिक नहीं है।
किसी असेंबली लैंग्वेज प्रोग्राम की इंस्ट्रक्शन पाथ लेंथ सामान्यतः उस प्रोग्राम के लिए कोड की स्रोत लाइनों की संख्या से अधिक भिन्न होती है, क्योंकि इंस्ट्रक्शन पाथ लेंथ में दिए गए इनपुट के लिए निष्पादित नियंत्रण प्रवाह में केवल कोड सम्मिलित होता है एवं इसमें वह कोड सम्मिलित नहीं होता है जो विशेष इनपुट, या पहुंच योग्य कोड के लिए प्रासंगिक नहीं है।


==हाई लेवल लैंग्वेज (एचएलएल) प्रोग्राम==
==हाई लेवल लैंग्वेज (एचएलएल) प्रोग्राम==
चूँकि हाई लेवल लैंग्वेज में लिखा गया कथन चर संख्या के कई मशीन अनुदेश उत्पन्न कर सकता है, उदाहरण के लिए, अनुदेश सेट सिम्युलेटर के अभाव में अनुदेश पथ की लंबाई निर्धारित करना सदैव संभव नहीं होता है{{snd}}जो सिमुलेशन के समयान 'निष्पादित' अनुदेशों की संख्या की गणना कर सकता है। यदि  हाई लेवल लैंग्वेज 'असेंबली सूची' का समर्थन करती है एवं वैकल्पिक रूप से तत्पर करती है, तो कभी-कभी इस सूची की शोध करके अनुदेश पथ की लंबाई का अनुमान लगाना संभव होता है।
चूँकि हाई लेवल लैंग्वेज में लिखा गया कथन चर संख्या के कई मशीन अनुदेश उत्पन्न कर सकता है, उदाहरण के लिए, अनुदेश सेट सिम्युलेटर के अभाव में इंस्ट्रक्शन पाथ लेंथ निर्धारित करना सदैव संभव नहीं होता है{{snd}}जो सिमुलेशन के समयान 'निष्पादित' अनुदेशों की संख्या की गणना कर सकता है। यदि  हाई लेवल लैंग्वेज 'असेंबली सूची' का समर्थन करती है एवं वैकल्पिक रूप से तत्पर करती है, तो कभी-कभी इस सूची की शोध करके इंस्ट्रक्शन पाथ लेंथ का अनुमान लगाना संभव होता है।


==अनुदेश पथ की लंबाई निर्धारित करने वाले कारक==
==इंस्ट्रक्शन पाथ लेंथ निर्धारित करने वाले कारक==
* इन-लाइन कोड के प्रति समान कथन वाले फ़ंक्शन, प्रक्रिया या विधि से कॉल करने और लौटने के ओवरहेड्स है।
* इन-लाइन कोड के प्रति समान कथन वाले फ़ंक्शन, प्रक्रिया या विधि से कॉल करने और लौटने के ओवरहेड्स है।
* [[साहचर्य सरणी|अवर्गीकृत लुकअप सूची]] में वस्तुओं का क्रम लम्बे शोधों से बचने के लिए सबसे अधिक बार आने वाली वस्तुओं को पूर्व रखा जाना चाहिए।
* [[साहचर्य सरणी|अवर्गीकृत लुकअप सूची]] में वस्तुओं का क्रम लम्बे शोधों से बचने के लिए सबसे अधिक बार आने वाली वस्तुओं को पूर्व रखा जाना चाहिए।
Line 22: Line 22:


==अनुदेश पथ लंबाई का उपयोग==
==अनुदेश पथ लंबाई का उपयोग==
उपरोक्त से, यह विचार किया जा सकता है कि अनुदेश पथ की लंबाई के ज्ञान का उपयोग किया जा सकता है:
उपरोक्त से, यह विचार किया जा सकता है कि इंस्ट्रक्शन पाथ लेंथ के ज्ञान का उपयोग किया जा सकता है:


* किसी भी लैंग्वेज में प्रोग्राम के लिए समग्र पथ लंबाई को कम करने के लिए उपयुक्त एल्गोरिदम चयन करने के किए किया जाता है।
* किसी भी लैंग्वेज में प्रोग्राम के लिए समग्र पथ लंबाई को कम करने के लिए उपयुक्त एल्गोरिदम चयन करने के किए किया जाता है।

Revision as of 20:18, 9 September 2023

कंप्यूटर परफॉरमेंस में, इंस्ट्रक्शन पाथ लेंथ कंप्यूटर प्रोग्राम के सेक्शन को निष्पादित करने के लिए आवश्यक मशीन कोड अनुदेशों की संख्या है। पूर्ण प्रोग्राम के लिए कुल पथ लंबाई को किसी विशेष कंप्यूटर हार्डवेयर पर एल्गोरिदम के प्रदर्शन का माप माना जा सकता है। साधारण नियमबद्ध अनुदेश की पथ लंबाई सामान्यतः 2 के समान मानी जाती है, प्रथम अनुदेश अपेक्षा करने के लिए एवं दूसरा अनुदेश विशेष स्थिति संतुष्ट होने पर शाखा लेने के लिए होता है। पथ की लंबाई निर्धारित करते समय प्रत्येक अनुदेश को निष्पादित करने में लगने वाले समय को सामान्यतः ध्यान में नहीं रखा जाता है एवं इसलिए पथ की लंबाई किसी भी अर्थ में पूर्ण होने के अतिरिक्त सापेक्ष प्रदर्शन का संकेत मात्र है।

बेंचमार्क प्रोग्राम निष्पादित करते समय, अधिकांश इंस्ट्रक्शन पाथ लेंथ सामान्यतः प्रोग्राम के आंतरिक लूप के अंदर होती है।

कैश के प्रारम्भ से पूर्व, पथ की लंबाई चलने के समय का अनुमान था, किन्तु कैश के साथ आधुनिक सीपीयू में, यह अधिक त्रुटिपूर्ण अनुमान हो सकता है, जब डेटा कैश में नहीं होता है तो कुछ लोड अनुदेशों में सैकड़ों चक्र लगते हैं, या कैश में होने पर तीव्रता बढ़ती हैं (यहां तक ​​कि लूप में दूसरे राउंड में भी वही निर्देश होते हैं)।

असेंबली प्रोग्राम

चूँकि, सामान्यतः, असेंबली अनुदेशों एवं मशीन अनुदेशों के मध्य संबंध होता है, इंस्ट्रक्शन पाथ लेंथ को प्रायः किसी फ़ंक्शन या कोड के विशेष सेक्शन को निष्पादित करने के लिए आवश्यक असेंबली अनुदेशों की संख्या के रूप में लिया जाता है। 1,000 प्रविष्टियों की अवर्गीकृत सूची पर साधारण लुकअप टेबल निष्पादित करने के लिए संभवतः 2,000 मशीन अनुदेशों की आवश्यकता हो सकती है (औसतन, इनपुट मानों का समान वितरण मानते हुए), जबकि बाइनरी शोध एल्गोरिदम का उपयोग करके सॉर्टिंग सूची पर समान लुकअप करने के लिए केवल 40 मशीन अनुदेशों की आवश्यकता हो सकती है, जो अधिक महत्वपूर्ण बचत है। इंस्ट्रक्शन पाथ लेंथ के संदर्भ में व्यक्त, इस सॉफ्टवेयर मीट्रिक को इस उदाहरण में 50 के बड़े कारक से कम किया जाएगा – यही कारण है कि कम पथ लंबाई की आवश्यकता वाले एल्गोरिदम के श्रेष्ठ विकल्प की अपेक्षा में वास्तविक अनुदेश समय माध्यमिक विचार हो सकता है।

किसी असेंबली लैंग्वेज प्रोग्राम की इंस्ट्रक्शन पाथ लेंथ सामान्यतः उस प्रोग्राम के लिए कोड की स्रोत लाइनों की संख्या से अधिक भिन्न होती है, क्योंकि इंस्ट्रक्शन पाथ लेंथ में दिए गए इनपुट के लिए निष्पादित नियंत्रण प्रवाह में केवल कोड सम्मिलित होता है एवं इसमें वह कोड सम्मिलित नहीं होता है जो विशेष इनपुट, या पहुंच योग्य कोड के लिए प्रासंगिक नहीं है।

हाई लेवल लैंग्वेज (एचएलएल) प्रोग्राम

चूँकि हाई लेवल लैंग्वेज में लिखा गया कथन चर संख्या के कई मशीन अनुदेश उत्पन्न कर सकता है, उदाहरण के लिए, अनुदेश सेट सिम्युलेटर के अभाव में इंस्ट्रक्शन पाथ लेंथ निर्धारित करना सदैव संभव नहीं होता है – जो सिमुलेशन के समयान 'निष्पादित' अनुदेशों की संख्या की गणना कर सकता है। यदि हाई लेवल लैंग्वेज 'असेंबली सूची' का समर्थन करती है एवं वैकल्पिक रूप से तत्पर करती है, तो कभी-कभी इस सूची की शोध करके इंस्ट्रक्शन पाथ लेंथ का अनुमान लगाना संभव होता है।

इंस्ट्रक्शन पाथ लेंथ निर्धारित करने वाले कारक

  • इन-लाइन कोड के प्रति समान कथन वाले फ़ंक्शन, प्रक्रिया या विधि से कॉल करने और लौटने के ओवरहेड्स है।
  • अवर्गीकृत लुकअप सूची में वस्तुओं का क्रम लम्बे शोधों से बचने के लिए सबसे अधिक बार आने वाली वस्तुओं को पूर्व रखा जाना चाहिए।
  • एल्गोरिदम का चयन – अनुक्रमित शोध, बाइनरी शोध या रैखिक शोध है।
  • नवीन सिरे से गणना करें एवं पूर्व की गई गणना को बनाए रखें (संस्मरण) – कई समष्टि पुनरावृत्तियों को कम कर सकता है।
  • कुछ तालिकाओं को मेमोरी में पढ़ें एवं बाहरी तालिकाओं को प्रत्येक बार नवीन सिरे से पढ़ें – इनपुट/आउटपुट फ़ंक्शन कॉल के माध्यम से उच्च पथ लंबाई से बचना है।

अनुदेश पथ लंबाई का उपयोग

उपरोक्त से, यह विचार किया जा सकता है कि इंस्ट्रक्शन पाथ लेंथ के ज्ञान का उपयोग किया जा सकता है:

  • किसी भी लैंग्वेज में प्रोग्राम के लिए समग्र पथ लंबाई को कम करने के लिए उपयुक्त एल्गोरिदम चयन करने के किए किया जाता है।
  • किसी प्रोग्राम का किसी भी लैंग्वेज में कितनी उचित प्रकार से अनुकूलित किया गया है।
  • यह निर्धारित करने के लिए कि किसी एचएलएल लैंग्वेज के लिए विशेष एचएलएल कथन कितने कुशल हैं।
  • समग्र कंप्यूटर प्रदर्शन के अनुमानित माप के रूप में किया जा सकता है।

बाहरी संबंध

  • [1] कंप्यूटर आर्किटेक्चर जॉन एल. हेनेसी, डेविड ए. पैटरसन, डेविड गोल्डबर्ग, क्रस्टे असानोविक द्वारा
  • [2] IBM – आईबीएम - प्रदर्शन प्रतिबंधों की शब्दावली