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

From Vigyanwiki
No edit summary
No edit summary
Line 7: Line 7:


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


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


==अनुदेश पथ की लंबाई निर्धारित करने वाले कारक==
==अनुदेश पथ की लंबाई निर्धारित करने वाले कारक==
* इन-लाइन कोड बनाम सबरूटीन#इनलाइनिंग एवं समान कथन वाले फ़ंक्शन, प्रक्रिया या विधि से लौटना
* इन-लाइन कोड के प्रति समान कथन वाले फ़ंक्शन, प्रक्रिया या विधि से लौटने के ओवरहेड्स है।
* [[साहचर्य सरणी]] में वस्तुओं का क्रम{{snd}} लंबी खोजों से बचने के लिए सबसे अधिक बार आने वाली वस्तुओं को पूर्व रखा जाना चाहिए
* [[साहचर्य सरणी|अवर्गीकृत लुकअप सरणी]] में वस्तुओं का क्रम लंबी शोधों से बचने के लिए सबसे अधिक बार आने वाली वस्तुओं को पूर्व रखा जाना चाहिए।
* एल्गोरिदम का चयन{{snd}} [[अनुक्रमित खोज]], बाइनरी खोज या जानवर-बल खोज|रैखिक (आइटम-दर-आइटम) खोज
* एल्गोरिदम का चयन{{snd}}[[अनुक्रमित खोज|अनुक्रमित शोध]], बाइनरी शोध या रैखिक (आइटम-दर-आइटम) शोध है।
* नए सिरे से गणना करें बनाम पूर्व की गई गणना को बरकरार रखें ([[संस्मरण]]){{snd}} कई जटिल पुनरावृत्तियों को कम कर सकता है
* नए सिरे से गणना करें एवं पूर्व की गई गणना को बनाए रखें ([[संस्मरण]]){{snd}}कई समष्टि पुनरावृत्तियों को कम कर सकता है।
* कैश (कंप्यूटिंग) बनाम बाहरी हर बार नए सिरे से पढ़ें{{snd}} ाधिक I/O फ़ंक्शन कॉल के माध्यम से उच्च पथ लंबाई से बचना
* कुछ तालिकाओं को मेमोरी में पढ़ें के प्रति बाहरी प्रत्येक बार नए सिरे से पढ़ें{{snd}}इनपुट/आउटपुट फ़ंक्शन कॉल के माध्यम से उच्च पथ लंबाई से बचना है।


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

Revision as of 11:20, 6 August 2023

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

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

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

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

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

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

उच्च स्तरीय लैंग्वेज (एचएलएल) प्रोग्राम

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

अनुदेश पथ की लंबाई निर्धारित करने वाले कारक

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

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

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

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

बाहरी संबंध

  • [1] Computer Architecture By John L. Hennessy, David A. Patterson, David Goldberg, Krste Asanovic
  • [2] IBM – Glossary of Performance Terms