अनुदेश पथ की लंबाई: Difference between revisions
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 के समान मानी जाती है, प्रथम अनुदेश अपेक्षा करने के लिए एवं दूसरा अनुदेश विशेष स्थिति संतुष्ट होने पर शाखा लेने के लिए होता है। पथ की लंबाई निर्धारित करते समय प्रत्येक अनुदेश को निष्पादित करने में लगने वाले समय को सामान्यतः ध्यान में नहीं रखा जाता है एवं इसलिए पथ की लंबाई किसी भी अर्थ में पूर्ण होने के अतिरिक्त सापेक्ष प्रदर्शन का संकेत मात्र है। | ||
[[बेंचमार्क प्रोग्राम]] निष्पादित करते समय, अधिकांश | [[बेंचमार्क प्रोग्राम]] निष्पादित करते समय, अधिकांश अनुदेश पथ की लंबाई सामान्यतः प्रोग्राम के आंतरिक लूप के अंदर होती है। | ||
[[कैश (कंप्यूटिंग)]] | [[कैश (कंप्यूटिंग)]] का प्रारम्भ से पूर्व, पथ की लंबाई चलने के समय का अनुमान था, किन्तु कैश के साथ आधुनिक सीपीयू में, यह अधिक त्रुटिपूर्ण अनुमान हो सकता है, जब डेटा कैश में नहीं होता है तो कुछ लोड अनुदेशों में सैकड़ों चक्र लगते हैं, या कैश में होने पर तीव्रता बढ़ती हैं (यहां तक कि लूप में दूसरे समय में भी वही अनुदेश)। | ||
== | ==असेंबली प्रोग्राम== | ||
चूँकि, सामान्यतः, असेंबली | चूँकि, सामान्यतः, असेंबली लैंग्वेज अनुदेशों एवं मशीन अनुदेशों के बीच संबंध होता है, अनुदेश पथ की लंबाई को प्रायः किसी फ़ंक्शन या कोड के विशेष अनुभाग को निष्पादित करने के लिए आवश्यक असेंबली अनुदेशों की संख्या के रूप में लिया जाता है। 1,000 प्रविष्टियों की [[छँटाई|अवर्गीकृत]] सूची पर साधारण लुकअप तालिका निष्पादित करने के लिए शायद 2,000 मशीन अनुदेशों की आवश्यकता हो सकती है (औसतन, इनपुट मानों का समान वितरण मानते हुए), जबकि [[बाइनरी खोज एल्गोरिदम]] का उपयोग करके सॉर्टिंग सूची पर समान लुकअप करने के लिए केवल 40 मशीन अनुदेशों की आवश्यकता हो सकती है, जो अधिक ही महत्वपूर्ण बचत है। अनुदेश पथ की लंबाई के संदर्भ में व्यक्त, इस [[सॉफ्टवेयर मीट्रिक]] को इस उदाहरण में 50 के बड़े कारक से कम किया जाएगा{{snd}}यही कारण है कि कम पथ लंबाई की आवश्यकता वाले एल्गोरिदम के अच्छे विकल्प की अपेक्षा में वास्तविक अनुदेश समय माध्यमिक विचार हो सकता है। | ||
किसी असेंबली | किसी असेंबली लैंग्वेज प्रोग्राम की अनुदेश पथ की लंबाई सामान्यतः उस प्रोग्राम के लिए कोड की स्रोत लाइनों की संख्या से काफी भिन्न होती है, क्योंकि अनुदेश पथ की लंबाई में दिए गए इनपुट के लिए निष्पादित नियंत्रण प्रवाह में केवल कोड शामिल होता है एवं इसमें वह कोड शामिल नहीं होता है जो विशेष इनपुट, या पहुंच योग्य कोड के लिए प्रासंगिक नहीं है। | ||
==उच्च स्तरीय | ==उच्च स्तरीय लैंग्वेज (एचएलएल) प्रोग्राम== | ||
चूँकि उच्च-स्तरीय | चूँकि उच्च-स्तरीय लैंग्वेज में लिखा गया कथन चर संख्या के कई मशीन अनुदेश उत्पन्न कर सकता है, उदाहरण के लिए, अनुदेश सेट सिम्युलेटर के बिना अनुदेश पथ की लंबाई निर्धारित करना हमेशा संभव नहीं होता है{{snd}} जो सिमुलेशन के समयान 'निष्पादित' अनुदेशों की संख्या की गणना कर सकता है। यदि उच्च-स्तरीय लैंग्वेज 'असेंबली सूची' का समर्थन करती है एवं वैकल्पिक रूप से तैयार करती है, तो कभी-कभी इस सूची की जांच करके अनुदेश पथ की लंबाई का अनुमान लगाना संभव होता है। | ||
== | ==अनुदेश पथ की लंबाई निर्धारित करने वाले कारक== | ||
* इन-लाइन कोड बनाम सबरूटीन#इनलाइनिंग एवं समान कथन वाले फ़ंक्शन, प्रक्रिया या विधि से लौटना | * इन-लाइन कोड बनाम सबरूटीन#इनलाइनिंग एवं समान कथन वाले फ़ंक्शन, प्रक्रिया या विधि से लौटना | ||
* [[साहचर्य सरणी]] में वस्तुओं का क्रम{{snd}} लंबी खोजों से बचने के लिए सबसे अधिक बार आने वाली वस्तुओं को | * [[साहचर्य सरणी]] में वस्तुओं का क्रम{{snd}} लंबी खोजों से बचने के लिए सबसे अधिक बार आने वाली वस्तुओं को पूर्व रखा जाना चाहिए | ||
* एल्गोरिदम का चयन{{snd}} [[अनुक्रमित खोज]], बाइनरी खोज या जानवर-बल खोज|रैखिक (आइटम-दर-आइटम) खोज | * एल्गोरिदम का चयन{{snd}} [[अनुक्रमित खोज]], बाइनरी खोज या जानवर-बल खोज|रैखिक (आइटम-दर-आइटम) खोज | ||
* नए सिरे से गणना करें बनाम | * नए सिरे से गणना करें बनाम पूर्व की गई गणना को बरकरार रखें ([[संस्मरण]]){{snd}} कई जटिल पुनरावृत्तियों को कम कर सकता है | ||
* कैश (कंप्यूटिंग) बनाम बाहरी हर बार नए सिरे से पढ़ें{{snd}} ाधिक I/O फ़ंक्शन कॉल के माध्यम से उच्च पथ लंबाई से बचना | * कैश (कंप्यूटिंग) बनाम बाहरी हर बार नए सिरे से पढ़ें{{snd}} ाधिक I/O फ़ंक्शन कॉल के माध्यम से उच्च पथ लंबाई से बचना | ||
== | ==अनुदेश पथ लंबाई का उपयोग== | ||
उपरोक्त से, यह महसूस किया जा सकता है कि | उपरोक्त से, यह महसूस किया जा सकता है कि अनुदेश पथ की लंबाई के ज्ञान का उपयोग किया जा सकता है: | ||
* किसी भी | * किसी भी लैंग्वेज में प्रोग्राम के लिए समग्र पथ लंबाई को कम करने के लिए उपयुक्त एल्गोरिदम चुनना | ||
* किसी प्रोग्राम का किसी भी | * किसी प्रोग्राम का किसी भी लैंग्वेज में [[अनुकूलन (कंप्यूटर विज्ञान)]] कितना अच्छा रहा है, इसकी निगरानी करना | ||
* यह निर्धारित करने के लिए कि किसी एचएलएल | * यह निर्धारित करने के लिए कि किसी एचएलएल लैंग्वेज के लिए विशेष एचएलएल कथन कितने कुशल हैं | ||
* समग्र कंप्यूटर प्रदर्शन के अनुमानित माप के रूप में | * समग्र कंप्यूटर प्रदर्शन के अनुमानित माप के रूप में | ||
Revision as of 11:00, 6 August 2023
कंप्यूटर प्रदर्शन में, अनुदेश पथ की लंबाई कंप्यूटर प्रोग्राम के अनुभाग को निष्पादित करने के लिए आवश्यक मशीन कोड अनुदेशों की संख्या है। पूर्ण प्रोग्राम के लिए कुल पथ लंबाई को किसी विशेष कंप्यूटर हार्डवेयर पर एल्गोरिदम के प्रदर्शन का माप माना जा सकता है। साधारण सशर्त अनुदेश की पथ लंबाई सामान्यतः 2 के समान मानी जाती है, प्रथम अनुदेश अपेक्षा करने के लिए एवं दूसरा अनुदेश विशेष स्थिति संतुष्ट होने पर शाखा लेने के लिए होता है। पथ की लंबाई निर्धारित करते समय प्रत्येक अनुदेश को निष्पादित करने में लगने वाले समय को सामान्यतः ध्यान में नहीं रखा जाता है एवं इसलिए पथ की लंबाई किसी भी अर्थ में पूर्ण होने के अतिरिक्त सापेक्ष प्रदर्शन का संकेत मात्र है।
बेंचमार्क प्रोग्राम निष्पादित करते समय, अधिकांश अनुदेश पथ की लंबाई सामान्यतः प्रोग्राम के आंतरिक लूप के अंदर होती है।
कैश (कंप्यूटिंग) का प्रारम्भ से पूर्व, पथ की लंबाई चलने के समय का अनुमान था, किन्तु कैश के साथ आधुनिक सीपीयू में, यह अधिक त्रुटिपूर्ण अनुमान हो सकता है, जब डेटा कैश में नहीं होता है तो कुछ लोड अनुदेशों में सैकड़ों चक्र लगते हैं, या कैश में होने पर तीव्रता बढ़ती हैं (यहां तक कि लूप में दूसरे समय में भी वही अनुदेश)।
असेंबली प्रोग्राम
चूँकि, सामान्यतः, असेंबली लैंग्वेज अनुदेशों एवं मशीन अनुदेशों के बीच संबंध होता है, अनुदेश पथ की लंबाई को प्रायः किसी फ़ंक्शन या कोड के विशेष अनुभाग को निष्पादित करने के लिए आवश्यक असेंबली अनुदेशों की संख्या के रूप में लिया जाता है। 1,000 प्रविष्टियों की अवर्गीकृत सूची पर साधारण लुकअप तालिका निष्पादित करने के लिए शायद 2,000 मशीन अनुदेशों की आवश्यकता हो सकती है (औसतन, इनपुट मानों का समान वितरण मानते हुए), जबकि बाइनरी खोज एल्गोरिदम का उपयोग करके सॉर्टिंग सूची पर समान लुकअप करने के लिए केवल 40 मशीन अनुदेशों की आवश्यकता हो सकती है, जो अधिक ही महत्वपूर्ण बचत है। अनुदेश पथ की लंबाई के संदर्भ में व्यक्त, इस सॉफ्टवेयर मीट्रिक को इस उदाहरण में 50 के बड़े कारक से कम किया जाएगा – यही कारण है कि कम पथ लंबाई की आवश्यकता वाले एल्गोरिदम के अच्छे विकल्प की अपेक्षा में वास्तविक अनुदेश समय माध्यमिक विचार हो सकता है।
किसी असेंबली लैंग्वेज प्रोग्राम की अनुदेश पथ की लंबाई सामान्यतः उस प्रोग्राम के लिए कोड की स्रोत लाइनों की संख्या से काफी भिन्न होती है, क्योंकि अनुदेश पथ की लंबाई में दिए गए इनपुट के लिए निष्पादित नियंत्रण प्रवाह में केवल कोड शामिल होता है एवं इसमें वह कोड शामिल नहीं होता है जो विशेष इनपुट, या पहुंच योग्य कोड के लिए प्रासंगिक नहीं है।
उच्च स्तरीय लैंग्वेज (एचएलएल) प्रोग्राम
चूँकि उच्च-स्तरीय लैंग्वेज में लिखा गया कथन चर संख्या के कई मशीन अनुदेश उत्पन्न कर सकता है, उदाहरण के लिए, अनुदेश सेट सिम्युलेटर के बिना अनुदेश पथ की लंबाई निर्धारित करना हमेशा संभव नहीं होता है – जो सिमुलेशन के समयान 'निष्पादित' अनुदेशों की संख्या की गणना कर सकता है। यदि उच्च-स्तरीय लैंग्वेज 'असेंबली सूची' का समर्थन करती है एवं वैकल्पिक रूप से तैयार करती है, तो कभी-कभी इस सूची की जांच करके अनुदेश पथ की लंबाई का अनुमान लगाना संभव होता है।
अनुदेश पथ की लंबाई निर्धारित करने वाले कारक
- इन-लाइन कोड बनाम सबरूटीन#इनलाइनिंग एवं समान कथन वाले फ़ंक्शन, प्रक्रिया या विधि से लौटना
- साहचर्य सरणी में वस्तुओं का क्रम – लंबी खोजों से बचने के लिए सबसे अधिक बार आने वाली वस्तुओं को पूर्व रखा जाना चाहिए
- एल्गोरिदम का चयन – अनुक्रमित खोज, बाइनरी खोज या जानवर-बल खोज|रैखिक (आइटम-दर-आइटम) खोज
- नए सिरे से गणना करें बनाम पूर्व की गई गणना को बरकरार रखें (संस्मरण) – कई जटिल पुनरावृत्तियों को कम कर सकता है
- कैश (कंप्यूटिंग) बनाम बाहरी हर बार नए सिरे से पढ़ें – ाधिक I/O फ़ंक्शन कॉल के माध्यम से उच्च पथ लंबाई से बचना
अनुदेश पथ लंबाई का उपयोग
उपरोक्त से, यह महसूस किया जा सकता है कि अनुदेश पथ की लंबाई के ज्ञान का उपयोग किया जा सकता है:
- किसी भी लैंग्वेज में प्रोग्राम के लिए समग्र पथ लंबाई को कम करने के लिए उपयुक्त एल्गोरिदम चुनना
- किसी प्रोग्राम का किसी भी लैंग्वेज में अनुकूलन (कंप्यूटर विज्ञान) कितना अच्छा रहा है, इसकी निगरानी करना
- यह निर्धारित करने के लिए कि किसी एचएलएल लैंग्वेज के लिए विशेष एचएलएल कथन कितने कुशल हैं
- समग्र कंप्यूटर प्रदर्शन के अनुमानित माप के रूप में