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

From Vigyanwiki
No edit summary
 
(8 intermediate revisions by 2 users not shown)
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}}जो सिमुलेशन के समयान 'एक्सीक्यूट' अनुदेशों की संख्या की गणना कर सकता है। यदि हाई लेवल लैंग्वेज 'असेंबली सूची' का समर्थन करती है एवं वैकल्पिक रूप से तत्पर करती है, तो कभी-कभी इस सूची की शोध करके इंस्ट्रक्शन पाथ लेंथ का अनुमान लगाना संभव होता है।


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


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


* किसी भी लैंग्वेज में प्रोग्राम के लिए समग्र पथ लंबाई को कम करने के लिए उपयुक्त एल्गोरिदम चुनना
* किसी भी लैंग्वेज में प्रोग्राम के लिए समग्र पाथ लेंथ को मिनीमाइज करने के लिए उपयुक्त एल्गोरिदम का चयन किया जाता है।
* किसी प्रोग्राम का किसी भी लैंग्वेज में [[अनुकूलन (कंप्यूटर विज्ञान)]] कितना अच्छा रहा है, इसकी निगरानी करना
* यह मॉनिटर करने के लिए इसका उपयोग किया जाता है कि किसी प्रोग्राम को किसी भी लैंग्वेज में कितने उचित प्रकार से [[अनुकूलन (कंप्यूटर विज्ञान)|ऑप्टिमाइज़]] किया गया है।
* यह निर्धारित करने के लिए कि किसी एचएलएल लैंग्वेज के लिए विशेष एचएलएल कथन कितने कुशल हैं
* इसका उपयोग यह निर्धारित करने के लिए किया जाता है कि किसी एचएलएल लैंग्वेज के लिए विशेष एचएलएल स्टेटमेंट्स कितने एफिशिएंट हैं।
* समग्र कंप्यूटर प्रदर्शन के अनुमानित माप के रूप में
* ओवरआल कंप्यूटर परफॉरमेंस के अप्प्रोक्सिमेट मिज़र के रूप में इसका उपयोग किया जा सकता है।


==बाहरी संबंध==
==बाहरी संबंध==
* [https://books.google.com/books?id=R7Frpn3g9AEC&dq=%22instruction+path+length%22&pg=PP1] Computer Architecture By John L. Hennessy, David A. Patterson, David Goldberg, Krste Asanovic
* [https://books.google.com/books?id=R7Frpn3g9AEC&dq=%22instruction+path+length%22&pg=PP1] कंप्यूटर आर्किटेक्चर जॉन एल. हेनेसी, डेविड ए. पैटरसन, डेविड गोल्डबर्ग, क्रस्टे असानोविक द्वारा
* [http://www.vm.ibm.com/perf/reports/zvm/html/gloss.html] IBM – Glossary of Performance Terms
* [http://www.vm.ibm.com/perf/reports/zvm/html/gloss.html] IBM – आईबीएम - प्रदर्शन प्रतिबंधों की शब्दावली
[[Category: एल्गोरिदम का विश्लेषण]] [[Category: सॉफ्टवेयर अनुकूलन]]  
[[Category: एल्गोरिदम का विश्लेषण]] [[Category: सॉफ्टवेयर अनुकूलन]]  


Line 38: Line 38:
[[Category: Machine Translated Page]]
[[Category: Machine Translated Page]]
[[Category:Created On 25/07/2023]]
[[Category:Created On 25/07/2023]]
[[Category:Vigyan Ready]]

Latest revision as of 22:17, 2 February 2024

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

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

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

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

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

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

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

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

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

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

इंस्ट्रक्शन पाथ लेंथ का उपयोग

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

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

बाहरी संबंध

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