हॉट स्पॉट (कंप्यूटर प्रोग्रामिंग): Difference between revisions
No edit summary |
No edit summary |
||
Line 1: | Line 1: | ||
{{Other uses|Hotspot (disambiguation)#Computing}} | {{Other uses|Hotspot (disambiguation)#Computing}} | ||
[[कंप्यूटर विज्ञान]] में हॉट स्पॉट को | [[कंप्यूटर विज्ञान]] में '''हॉट स्पॉट''' को सामान्यतः [[कंप्यूटर प्रोग्राम]] के क्षेत्र के रूप में परिभाषित किया जाता है जहां निष्पादित निर्देशों का उच्च अनुपात होता है या जहां प्रोग्राम के निष्पादन के समय सबसे अधिक समय व्यतीत होता है (आवश्यक नहीं कि वही वर्णन हो क्योंकि कुछ निर्देश दूसरों की तुलना में तीव्र होते हैं)। | ||
यदि किसी प्रोग्राम को बेतरतीब ढंग से बाधित किया जाता है, तो [[ कार्यक्रम गणक ]] (निष्पादित किए जाने वाले अगले निर्देश के लिए [[ सूचक (कंप्यूटर प्रोग्रामिंग) ]]) में | यदि किसी प्रोग्राम को बेतरतीब ढंग से बाधित किया जाता है, तो [[ कार्यक्रम गणक ]] (निष्पादित किए जाने वाले अगले निर्देश के लिए [[ सूचक (कंप्यूटर प्रोग्रामिंग) ]]) में प्रायः निश्चित सीमा के अंदर निर्देश का ज्ञात शामिल होता है, जो संभवतः उस कोड को इंगित करता है जिसे अनुकूलन की आवश्यकता होती है या यहां तक कि 'टाइट' [[ CPU ]] [[लूप (कंप्यूटिंग)]] के अस्तित्व का संकेत भी मिलता है। यह सरल तकनीक अत्यधिक उपयोग किए जाने वाले निर्देशों का ज्ञात लगा सकती है, चूँकि अधिक परिष्कृत उपाय, जैसे निर्देश सेट सिमुलेटर या [[प्रोफाइलिंग (कंप्यूटर प्रोग्रामिंग)]], इसे अधिक त्रुटिहीन और लगातार प्राप्त करते हैं। | ||
==हॉट स्पॉट का | ==हॉट स्पॉट का ज्ञात लगाने का इतिहास== | ||
कंप्यूटर वैज्ञानिक [[डोनाल्ड नुथ]] ने 1996 में डॉ. डॉब्स जर्नल के लिए साक्षात्कार में जम्प ट्रेस के साथ अपनी पहली मुठभेड़ का वर्णन करते हुए कहा: | कंप्यूटर वैज्ञानिक [[डोनाल्ड नुथ]] ने 1996 में डॉ. डॉब्स जर्नल के लिए साक्षात्कार में जम्प ट्रेस के साथ अपनी पहली मुठभेड़ का वर्णन करते हुए कहा: | ||
<ब्लॉककोट>60 के दशक में, किसी ने 'जंप ट्रेस' की अवधारणा का आविष्कार किया था। यह प्रोग्राम के [[मशीन कोड]] को बदलने का तरीका था ताकि यह नियंत्रण बनाए रखने के लिए अगली शाखा या जंप निर्देश को | <ब्लॉककोट>60 के दशक में, किसी ने 'जंप ट्रेस' की अवधारणा का आविष्कार किया था। यह प्रोग्राम के [[मशीन कोड]] को बदलने का तरीका था ताकि यह नियंत्रण बनाए रखने के लिए अगली शाखा या जंप निर्देश को परिवर्तित कर, ताकि आप समय में प्रत्येक निर्देश की व्याख्या करने के बजाय प्रोग्राम को अधिक तीव्र गति से निष्पादित कर सकें और फ़ाइल में रिकॉर्ड कर सकें जहां प्रोग्राम अनुक्रमिकता से भिन्न हो गया है। इस फ़ाइल को संसाधित करके आप यह ज्ञात लगा सकते हैं कि प्रोग्राम अपना अधिकांश समय कहाँ व्यतीत कर रहा है। इसलिए पहले दिन जब हमारे पास यह सॉफ़्टवेयर चल रहा था, हमने इसे अपने [[फोरट्रान]] [[ संकलक ]] पर लागू किया, जो मुझे लगता है कि उन दिनों [[नियंत्रण डेटा निगम]] द्वारा आपूर्ति किया गया था। हमने पाया कि यह अपना 87 प्रतिशत समय [[टिप्पणी (कंप्यूटर प्रोग्रामिंग)]] पढ़ने में व्यतीत कर रहा था! इसका कारण यह था कि यह कोड सिस्टम से दूसरे कोड सिस्टम में अनुवाद कर रहा था।<ref>[http://www.ntg.nl/maps/16/14.pdf Jack Woehr: An interview with Donald Knuth, April 1996.]</ref></ब्लॉककोट> | ||
===पुनरावृत्ति=== | ===पुनरावृत्ति=== | ||
ऊपर दिया गया उदाहरण यह स्पष्ट करता है कि प्रभावी हॉट स्पॉट का | ऊपर दिया गया उदाहरण यह स्पष्ट करता है कि प्रभावी हॉट स्पॉट का ज्ञात लगाना प्रायः पुनरावृत्ति प्रक्रिया है और शायद इसे सदैव किया जाना चाहिए (केवल यह स्वीकार करने के बजाय कि कोई प्रोग्राम उचित प्रदर्शन कर रहा है)। सभी बाहरी प्रसंस्करण को समाप्त करने के पश्चात् (उदाहरण के लिए सभी एम्बेडेड टिप्पणियों को हटाकर), नया रनटाइम विश्लेषण अनुवाद में वास्तविक हॉट स्पॉट का अधिक त्रुटिहीन रूप से ज्ञात लगाएगा। यदि किसी भी हॉट स्पॉट का ज्ञात नहीं लगाया गया होता, तो संभवतः कई मशीनों पर कई वर्षों तक प्रोग्राम ने आवश्यकता से कहीं अधिक संसाधनों का उपभोग किया होता, बिना किसी को भी इसके बारे में पूरी तरह से ज्ञात चले। | ||
==हॉट स्पॉट डिटेक्टर के रूप में अनुदेश सेट सिमुलेशन== | ==हॉट स्पॉट डिटेक्टर के रूप में अनुदेश सेट सिमुलेशन== | ||
निर्देश सेट सिम्युलेटर का उपयोग किसी विशेष निर्देश के निष्पादित होने पर हर बार गणना करने के लिए किया जा सकता है और | निर्देश सेट सिम्युलेटर का उपयोग किसी विशेष निर्देश के निष्पादित होने पर हर बार गणना करने के लिए किया जा सकता है और पश्चात् में या तो ऑन-स्क्रीन डिस्प्ले, मुद्रित प्रोग्राम सूची (गणना और/या कुल निर्देश पथ लंबाई की प्रतिशतता के साथ) या भिन्न रिपोर्ट तैयार की जा सकती है, जो त्रुटिहीन रूप से दिखाती है कि सबसे अधिक संख्या में निर्देश कहां हुए। यह केवल हॉट स्पॉट का सापेक्ष दृश्य प्रदान करता है (निर्देश चरण परिप्रेक्ष्य से) क्योंकि अधिकांश निर्देशों में कई मशीनों पर भिन्न-भिन्न समय होता है। फिर भी यह अत्यधिक उपयोग किए जाने वाले कोड का माप प्रदान करता है और एल्गोरिथ्म को ट्यून करते समय अपने आप में अधिक उपयोगी होता है। | ||
==यह भी देखें== | ==यह भी देखें== |
Revision as of 06:49, 8 August 2023
कंप्यूटर विज्ञान में हॉट स्पॉट को सामान्यतः कंप्यूटर प्रोग्राम के क्षेत्र के रूप में परिभाषित किया जाता है जहां निष्पादित निर्देशों का उच्च अनुपात होता है या जहां प्रोग्राम के निष्पादन के समय सबसे अधिक समय व्यतीत होता है (आवश्यक नहीं कि वही वर्णन हो क्योंकि कुछ निर्देश दूसरों की तुलना में तीव्र होते हैं)।
यदि किसी प्रोग्राम को बेतरतीब ढंग से बाधित किया जाता है, तो कार्यक्रम गणक (निष्पादित किए जाने वाले अगले निर्देश के लिए सूचक (कंप्यूटर प्रोग्रामिंग) ) में प्रायः निश्चित सीमा के अंदर निर्देश का ज्ञात शामिल होता है, जो संभवतः उस कोड को इंगित करता है जिसे अनुकूलन की आवश्यकता होती है या यहां तक कि 'टाइट' CPU लूप (कंप्यूटिंग) के अस्तित्व का संकेत भी मिलता है। यह सरल तकनीक अत्यधिक उपयोग किए जाने वाले निर्देशों का ज्ञात लगा सकती है, चूँकि अधिक परिष्कृत उपाय, जैसे निर्देश सेट सिमुलेटर या प्रोफाइलिंग (कंप्यूटर प्रोग्रामिंग), इसे अधिक त्रुटिहीन और लगातार प्राप्त करते हैं।
हॉट स्पॉट का ज्ञात लगाने का इतिहास
कंप्यूटर वैज्ञानिक डोनाल्ड नुथ ने 1996 में डॉ. डॉब्स जर्नल के लिए साक्षात्कार में जम्प ट्रेस के साथ अपनी पहली मुठभेड़ का वर्णन करते हुए कहा: <ब्लॉककोट>60 के दशक में, किसी ने 'जंप ट्रेस' की अवधारणा का आविष्कार किया था। यह प्रोग्राम के मशीन कोड को बदलने का तरीका था ताकि यह नियंत्रण बनाए रखने के लिए अगली शाखा या जंप निर्देश को परिवर्तित कर, ताकि आप समय में प्रत्येक निर्देश की व्याख्या करने के बजाय प्रोग्राम को अधिक तीव्र गति से निष्पादित कर सकें और फ़ाइल में रिकॉर्ड कर सकें जहां प्रोग्राम अनुक्रमिकता से भिन्न हो गया है। इस फ़ाइल को संसाधित करके आप यह ज्ञात लगा सकते हैं कि प्रोग्राम अपना अधिकांश समय कहाँ व्यतीत कर रहा है। इसलिए पहले दिन जब हमारे पास यह सॉफ़्टवेयर चल रहा था, हमने इसे अपने फोरट्रान संकलक पर लागू किया, जो मुझे लगता है कि उन दिनों नियंत्रण डेटा निगम द्वारा आपूर्ति किया गया था। हमने पाया कि यह अपना 87 प्रतिशत समय टिप्पणी (कंप्यूटर प्रोग्रामिंग) पढ़ने में व्यतीत कर रहा था! इसका कारण यह था कि यह कोड सिस्टम से दूसरे कोड सिस्टम में अनुवाद कर रहा था।[1]</ब्लॉककोट>
पुनरावृत्ति
ऊपर दिया गया उदाहरण यह स्पष्ट करता है कि प्रभावी हॉट स्पॉट का ज्ञात लगाना प्रायः पुनरावृत्ति प्रक्रिया है और शायद इसे सदैव किया जाना चाहिए (केवल यह स्वीकार करने के बजाय कि कोई प्रोग्राम उचित प्रदर्शन कर रहा है)। सभी बाहरी प्रसंस्करण को समाप्त करने के पश्चात् (उदाहरण के लिए सभी एम्बेडेड टिप्पणियों को हटाकर), नया रनटाइम विश्लेषण अनुवाद में वास्तविक हॉट स्पॉट का अधिक त्रुटिहीन रूप से ज्ञात लगाएगा। यदि किसी भी हॉट स्पॉट का ज्ञात नहीं लगाया गया होता, तो संभवतः कई मशीनों पर कई वर्षों तक प्रोग्राम ने आवश्यकता से कहीं अधिक संसाधनों का उपभोग किया होता, बिना किसी को भी इसके बारे में पूरी तरह से ज्ञात चले।
हॉट स्पॉट डिटेक्टर के रूप में अनुदेश सेट सिमुलेशन
निर्देश सेट सिम्युलेटर का उपयोग किसी विशेष निर्देश के निष्पादित होने पर हर बार गणना करने के लिए किया जा सकता है और पश्चात् में या तो ऑन-स्क्रीन डिस्प्ले, मुद्रित प्रोग्राम सूची (गणना और/या कुल निर्देश पथ लंबाई की प्रतिशतता के साथ) या भिन्न रिपोर्ट तैयार की जा सकती है, जो त्रुटिहीन रूप से दिखाती है कि सबसे अधिक संख्या में निर्देश कहां हुए। यह केवल हॉट स्पॉट का सापेक्ष दृश्य प्रदान करता है (निर्देश चरण परिप्रेक्ष्य से) क्योंकि अधिकांश निर्देशों में कई मशीनों पर भिन्न-भिन्न समय होता है। फिर भी यह अत्यधिक उपयोग किए जाने वाले कोड का माप प्रदान करता है और एल्गोरिथ्म को ट्यून करते समय अपने आप में अधिक उपयोगी होता है।
यह भी देखें
- प्रोफाइलिंग (कंप्यूटर प्रोग्रामिंग)