हॉट स्पॉट (कंप्यूटर प्रोग्रामिंग): Difference between revisions

From Vigyanwiki
No edit summary
No edit summary
Line 1: Line 1:
{{Other uses|Hotspot (disambiguation)#Computing}}
{{Other uses|हॉटस्पॉट (बहुविकल्पी)#कंप्यूटिंग}}
[[कंप्यूटर विज्ञान]] में '''हॉट स्पॉट''' को सामान्यतः [[कंप्यूटर प्रोग्राम]] के क्षेत्र के रूप में परिभाषित किया जाता है जहां निष्पादित निर्देशों का उच्च अनुपात होता है या जहां प्रोग्राम के निष्पादन के समय सबसे अधिक समय व्यतीत होता है (आवश्यक नहीं कि वही वर्णन हो क्योंकि कुछ निर्देश दूसरों की तुलना में तीव्र होते हैं)।
[[कंप्यूटर विज्ञान]] में '''हॉट स्पॉट''' को सामान्यतः [[कंप्यूटर प्रोग्राम]] के क्षेत्र के रूप में परिभाषित किया जाता है जहां निष्पादित निर्देशों का उच्च अनुपात होता है या जहां प्रोग्राम के निष्पादन के समय सबसे अधिक समय व्यतीत होता है (आवश्यक नहीं कि वही वर्णन हो क्योंकि कुछ निर्देश दूसरों की तुलना में तीव्र होते हैं)।


यदि किसी प्रोग्राम को बेतरतीब ढंग से बाधित किया जाता है, तो [[ कार्यक्रम गणक ]] (निष्पादित किए जाने वाले अगले निर्देश के लिए [[ सूचक (कंप्यूटर प्रोग्रामिंग) ]]) में प्रायः निश्चित सीमा के अंदर निर्देश का ज्ञात शामिल होता है, जो संभवतः उस कोड को इंगित करता है जिसे अनुकूलन की आवश्यकता होती है या यहां तक ​​कि 'टाइट' [[ CPU ]] [[लूप (कंप्यूटिंग)]] के अस्तित्व का संकेत भी मिलता है। यह सरल तकनीक अत्यधिक उपयोग किए जाने वाले निर्देशों का ज्ञात लगा सकती है, चूँकि अधिक परिष्कृत उपाय, जैसे निर्देश सेट सिमुलेटर या [[प्रोफाइलिंग (कंप्यूटर प्रोग्रामिंग)]], इसे अधिक त्रुटिहीन और लगातार प्राप्त करते हैं।
यदि किसी प्रोग्राम को यादृच्छिक प्रकार से बाधित किया जाता है, तो [[ कार्यक्रम गणक |प्रोग्राम काउंटर]] (निष्पादित किए जाने वाले अगले निर्देश के लिए [[ सूचक (कंप्यूटर प्रोग्रामिंग) |सूचक (कंप्यूटर प्रोग्रामिंग)]] ) में प्रायः निश्चित सीमा के अंदर निर्देश का एड्रेस सम्मिलित होता है, जो संभवतः उस कोड को इंगित करता है जिसे अनुकूलन की आवश्यकता होती है या यहां तक ​​कि 'टाइट' [[ CPU |सीपीयू]] [[लूप (कंप्यूटिंग)]] के अस्तित्व का संकेत भी मिलता है। यह सरल तकनीक अत्यधिक उपयोग किए जाने वाले निर्देशों का ज्ञात कर सकती है, चूँकि अधिक परिष्कृत उपाय, जैसे निर्देश सेट सिमुलेटर या [[प्रोफाइलिंग (कंप्यूटर प्रोग्रामिंग)]], इसे अधिक त्रुटिहीन और अनुरूपता से प्राप्त करते हैं।


==हॉट स्पॉट का ज्ञात लगाने का इतिहास==
==हॉट स्पॉट को ज्ञात करने का इतिहास==
कंप्यूटर वैज्ञानिक [[डोनाल्ड नुथ]] ने 1996 में डॉ. डॉब्स जर्नल के लिए साक्षात्कार में जम्प ट्रेस के साथ अपनी पहली मुठभेड़ का वर्णन करते हुए कहा:
कंप्यूटर वैज्ञानिक [[डोनाल्ड नुथ]] ने 1996 में डॉ. डॉब्स जर्नल के लिए साक्षात्कार में जम्प ट्रेस के साथ अपनी प्रथम आकस्मिक भेंट का वर्णन करते हुए कहा:
<ब्लॉककोट>60 के दशक में, किसी ने 'जंप ट्रेस' की अवधारणा का आविष्कार किया था। यह प्रोग्राम के [[मशीन कोड]] को बदलने का तरीका था ताकि यह नियंत्रण बनाए रखने के लिए अगली शाखा या जंप निर्देश को परिवर्तित कर, ताकि आप समय में प्रत्येक निर्देश की व्याख्या करने के बजाय प्रोग्राम को अधिक तीव्र गति से निष्पादित कर सकें और फ़ाइल में रिकॉर्ड कर सकें जहां प्रोग्राम अनुक्रमिकता से भिन्न हो गया है। इस फ़ाइल को संसाधित करके आप यह ज्ञात लगा सकते हैं कि प्रोग्राम अपना अधिकांश समय कहाँ व्यतीत कर रहा है। इसलिए पहले दिन जब हमारे पास यह सॉफ़्टवेयर चल रहा था, हमने इसे अपने [[फोरट्रान]] [[ संकलक ]] पर लागू किया, जो मुझे लगता है कि उन दिनों [[नियंत्रण डेटा निगम]] द्वारा आपूर्ति किया गया था। हमने पाया कि यह अपना 87 प्रतिशत समय [[टिप्पणी (कंप्यूटर प्रोग्रामिंग)]] पढ़ने में व्यतीत कर रहा था! इसका कारण यह था कि यह कोड सिस्टम से दूसरे कोड सिस्टम में अनुवाद कर रहा था।<ref>[http://www.ntg.nl/maps/16/14.pdf Jack Woehr: An interview with Donald Knuth, April 1996.]</ref></ब्लॉककोट>
 
60 के दशक में, किसी ने 'जंप ट्रेस' की अवधारणा का आविष्कार किया था। यह प्रोग्राम के [[मशीन कोड]] को परिवर्तित करने का उपाय था जिससे यह नियंत्रण बनाए रखने के लिए ब्रांच या जंप निर्देश को परिवर्तित करे, जिससे आप समय में प्रत्येक निर्देश की व्याख्या करने के अतिरिक्त प्रोग्राम को अधिक तीव्र गति से निष्पादित कर सकें और फ़ाइल में रिकॉर्ड कर सकें जहां प्रोग्राम अनुक्रमिकता से पृथक हो गया है। इस फ़ाइल को संसाधित करके आप यह ज्ञात कर सकते हैं कि प्रोग्राम अपना अधिकांश समय कहाँ व्यतीत कर रहा है। इसलिए प्रथम दिन जब हमारे पास यह सॉफ़्टवेयर चल रहा था, हमने इसे अपने [[फोरट्रान]] [[ संकलक |संकलक]] पर प्रारम्भ किया, जो मुझे लगता है कि उन दिनों [[नियंत्रण डेटा निगम]] द्वारा आपूर्ति किया गया था। हमने पाया कि यह अपना 87 प्रतिशत समय [[टिप्पणी (कंप्यूटर प्रोग्रामिंग)]] पढ़ने में व्यतीत कर रहा था I इसका कारण यह था कि यह कोड सिस्टम से दूसरे कोड सिस्टम में अनुवाद कर रहा था।<ref>[http://www.ntg.nl/maps/16/14.pdf Jack Woehr: An interview with Donald Knuth, April 1996.]</ref>


===पुनरावृत्ति===
===पुनरावृत्ति===
ऊपर दिया गया उदाहरण यह स्पष्ट करता है कि प्रभावी हॉट स्पॉट का ज्ञात लगाना प्रायः पुनरावृत्ति प्रक्रिया है और शायद इसे सदैव किया जाना चाहिए (केवल यह स्वीकार करने के बजाय कि कोई प्रोग्राम उचित प्रदर्शन कर रहा है)। सभी बाहरी प्रसंस्करण को समाप्त करने के पश्चात् (उदाहरण के लिए सभी एम्बेडेड टिप्पणियों को हटाकर), नया रनटाइम विश्लेषण अनुवाद में वास्तविक हॉट स्पॉट का अधिक त्रुटिहीन रूप से ज्ञात लगाएगा। यदि किसी भी हॉट स्पॉट का ज्ञात नहीं लगाया गया होता, तो संभवतः कई मशीनों पर कई वर्षों तक प्रोग्राम ने आवश्यकता से कहीं अधिक संसाधनों का उपभोग किया होता, बिना किसी को भी इसके बारे में पूरी तरह से ज्ञात चले।
ऊपर दिया गया उदाहरण यह स्पष्ट करता है कि प्रभावी हॉट स्पॉट को ज्ञात करना प्रायः पुनरावृत्ति प्रक्रिया है और इसे सदैव किया जाना चाहिए (केवल यह स्वीकार करने के अतिरिक्त कि प्रोग्राम उचित प्रदर्शन कर रहा है)। सभी बाह्य प्रसंस्करण को समाप्त करने के पश्चात् (उदाहरण के लिए सभी एम्बेडेड टिप्पणियों को विस्थापित करके), नया रनटाइम विश्लेषण अनुवाद में वास्तविक हॉट स्पॉट का अधिक त्रुटिहीन रूप से ज्ञात करेगा। यदि किसी भी हॉट स्पॉट का ज्ञात नहीं किया गया होता, तो संभवतः अनेक मशीनों पर अनेक वर्षों तक प्रोग्राम ने आवश्यकता से कहीं अधिक संसाधनों का उपभोग किया होता, बिना किसी को भी इसके सम्बन्ध में पूर्ण रूप से ज्ञात चले ही।


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


==यह भी देखें==
==यह भी देखें==

Revision as of 07:13, 8 August 2023

कंप्यूटर विज्ञान में हॉट स्पॉट को सामान्यतः कंप्यूटर प्रोग्राम के क्षेत्र के रूप में परिभाषित किया जाता है जहां निष्पादित निर्देशों का उच्च अनुपात होता है या जहां प्रोग्राम के निष्पादन के समय सबसे अधिक समय व्यतीत होता है (आवश्यक नहीं कि वही वर्णन हो क्योंकि कुछ निर्देश दूसरों की तुलना में तीव्र होते हैं)।

यदि किसी प्रोग्राम को यादृच्छिक प्रकार से बाधित किया जाता है, तो प्रोग्राम काउंटर (निष्पादित किए जाने वाले अगले निर्देश के लिए सूचक (कंप्यूटर प्रोग्रामिंग) ) में प्रायः निश्चित सीमा के अंदर निर्देश का एड्रेस सम्मिलित होता है, जो संभवतः उस कोड को इंगित करता है जिसे अनुकूलन की आवश्यकता होती है या यहां तक ​​कि 'टाइट' सीपीयू लूप (कंप्यूटिंग) के अस्तित्व का संकेत भी मिलता है। यह सरल तकनीक अत्यधिक उपयोग किए जाने वाले निर्देशों का ज्ञात कर सकती है, चूँकि अधिक परिष्कृत उपाय, जैसे निर्देश सेट सिमुलेटर या प्रोफाइलिंग (कंप्यूटर प्रोग्रामिंग), इसे अधिक त्रुटिहीन और अनुरूपता से प्राप्त करते हैं।

हॉट स्पॉट को ज्ञात करने का इतिहास

कंप्यूटर वैज्ञानिक डोनाल्ड नुथ ने 1996 में डॉ. डॉब्स जर्नल के लिए साक्षात्कार में जम्प ट्रेस के साथ अपनी प्रथम आकस्मिक भेंट का वर्णन करते हुए कहा:

60 के दशक में, किसी ने 'जंप ट्रेस' की अवधारणा का आविष्कार किया था। यह प्रोग्राम के मशीन कोड को परिवर्तित करने का उपाय था जिससे यह नियंत्रण बनाए रखने के लिए ब्रांच या जंप निर्देश को परिवर्तित करे, जिससे आप समय में प्रत्येक निर्देश की व्याख्या करने के अतिरिक्त प्रोग्राम को अधिक तीव्र गति से निष्पादित कर सकें और फ़ाइल में रिकॉर्ड कर सकें जहां प्रोग्राम अनुक्रमिकता से पृथक हो गया है। इस फ़ाइल को संसाधित करके आप यह ज्ञात कर सकते हैं कि प्रोग्राम अपना अधिकांश समय कहाँ व्यतीत कर रहा है। इसलिए प्रथम दिन जब हमारे पास यह सॉफ़्टवेयर चल रहा था, हमने इसे अपने फोरट्रान संकलक पर प्रारम्भ किया, जो मुझे लगता है कि उन दिनों नियंत्रण डेटा निगम द्वारा आपूर्ति किया गया था। हमने पाया कि यह अपना 87 प्रतिशत समय टिप्पणी (कंप्यूटर प्रोग्रामिंग) पढ़ने में व्यतीत कर रहा था I इसका कारण यह था कि यह कोड सिस्टम से दूसरे कोड सिस्टम में अनुवाद कर रहा था।[1]

पुनरावृत्ति

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

हॉट स्पॉट डिटेक्टर के रूप में अनुदेश सेट सिमुलेशन

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

यह भी देखें

  • प्रोफाइलिंग (कंप्यूटर प्रोग्रामिंग)

संदर्भ