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