"हॉट स्पॉट" की एक परिभाषा कोड का एक क्षेत्र है जहां कार्यक्रम काउंटर अपने समय का एक अच्छा अंश खर्च करता है। एक संबंधित शब्द "बाधा" है, जबकि बीमार परिभाषित, आमतौर पर एक फ़ंक्शन, दिनचर्या या विधि के लिए स्थानीय कोड को संदर्भित करता है, जो आवश्यक से अधिक समय व्यतीत करने का कारण बनता है।
ये दोनों शब्द बहुत भ्रामक हैं, क्योंकि वहां एक बड़ी अनजान धारणा है। धारणा यह है कि ऐसे कार्यक्रम को गति देने के कोई अवसर नहीं हैं जो हॉटस्पॉट या बाधा नहीं हैं। स्पीडअप अवसर उससे अधिक फैल सकते हैं, और यदि वे नहीं पाए जाते हैं और निश्चित होते हैं, तो वे प्रदर्शन limiter बन जाते हैं।
मुझे एक उदाहरण दें। हाल ही में, लगभग 300 लाइनों के सी ++ प्रोग्राम पर काम करते समय, मैंने दस stackshots लिया, क्योंकि मैं देखना चाहता था कि मैं इसे कैसे गति दे सकता हूं। उन stackshots की चार इस तरह देखा:
CTypedPtrArray<CPtrArray,COperation *>::operator[]() line 1555 + 23 bytes
TcProcess() line 246 + 14 bytes ---> COperation* pOp = oplist[i];
CMhAck::Handler() line 165
doit() line 297 + 12 bytes
main() line 318
CTypedPtrArray<CPtrArray,CJob *>::operator[]() line 1555 + 23 bytes
SchProcess() line 212 + 14 bytes ---> pJob = joblist[i];
COpAck::Handler() line 145
doit() line 297 + 12 bytes
main() line 318
CTypedPtrArray<CPtrArray,CTask *>::operator[]() line 1555 + 23 bytes
TcProcess() line 249 + 18 bytes ---> pTask = pOp->tasks[pOp->iCurTask];
CMhAck::Handler() line 165
doit() line 297 + 12 bytes
main() line 318
CTypedPtrArray<CPtrArray,CTask *>::operator[]() line 1555 + 23 bytes
COperation::~COperation() line 57 + 15 bytes ---> CTask* p = tasks[i];
COperation::`scalar deleting destructor'() + 37 bytes
TcProcess() line 259 + 28 bytes
CTskAck::Handler() line 193
doit() line 297 + 12 bytes
main() line 318
कार्यक्रम 20 सेकंड समग्र ले लिया। ये ढेर नमूने मुझे बता रहे हैं कि उस समय का लगभग 40% या 8 सेकंड, सरणी वर्ग पर इंडेक्सिंग ऑपरेटर में खर्च किया जाता है। यह मुझे बताता है कि मैं 20 सेकंड से 12 सेकंड तक चलने का समय कम कर सकता हूं, दे सकता हूं या ले सकता हूं, अगर मैं अधिक सीधे अनुक्रमणित कर सकता हूं, फ़ंक्शन कॉल के माध्यम से नहीं। गति 20/12 = 1.67, या 67% गतिशील होगी। (सूचना: मैं जब यह समय के लिए आता है के बारे में "सटीक" एक उल्लू की बोली नहीं है मैं क्या था समस्या पाते हैं करना चाहते थे।।)
अब एक आसानी से इस समस्या को ठीक की है कि विधि के साथ असहमत हो सकता है , लेकिन आप देख सकते हैं कि मुझे का पता चला था कि समस्या थी, है ना?
ठीक है, तो "हॉटस्पॉट" कहां है और "बाधा" कहां है? स्पष्ट रूप से इंडेक्सिंग ऑपरेटर फ़ंक्शन में एक हॉटस्पॉट है, लेकिन क्या समस्या है? (वास्तव में यह भी ऐसा नहीं है, क्योंकि यह तीन अलग-अलग फ़ंक्शन हैं।) क्या इसका मतलब है कि मुझे उस दिनचर्या को तेज़ी से बनाने की कोशिश करनी चाहिए? मेरे पास इसका स्वामित्व भी नहीं है!
क्या कुछ "धीमी दिनचर्या" के रूप में कोई बाधा है? नहीं! कोई विशेष दिनचर्या नहीं है जो धीमी है, या "खराब एल्गोरिदम" है।
मैंने जो किया था, वह विवरण वर्णन कर रहा था ("यह कुछ दिनचर्या में अनुक्रमणित है।") जहां वह विवरण उस समय का एक बड़ा अंश लागू होता है।
सबसे अच्छी अवधि मैं इन चीजों के लिए आ सकता हूं "टाइम नाली" है, क्योंकि यह वास्तव में नहीं होने वाली चीजों को करने में काफी समय व्यतीत कर रहा है।
More about terminology and popular misconceptions.
प्रोग्रामर के लिए एक सवाल संभाल यह ढेर? – Wivani