2011-10-27 10 views
6

मुझे पता है कि इन शर्तों का प्रदर्शन प्रदर्शन उपलब्धि के संदर्भ में उपयोग किया जाता है। आजकल मैं उस पर काम कर रहा हूं, और इंटरनेट से इन्हें जानने की कोशिश की है लेकिन वास्तविक उदाहरण के विकास परिदृश्यों में इन समस्याओं/अवधारणाओं के अस्तित्व के साथ इन अवधारणाओं को स्पष्ट रूप से प्रस्तुत करने वाला कोई उदाहरण नहीं मिला है। क्या कोई इन शर्तों को पूरी तरह से समझा सकता है, उदाहरण परिदृश्य, और जहां इन अवधारणाओं और शर्तों का उपयोग किया जा सकता है।बॉयलरप्लेट कोड, हॉट कोड और हॉट स्पॉट क्या है?

धन्यवाद।

+1

प्रोग्रामर के लिए एक सवाल संभाल यह ढेर? – Wivani

उत्तर

14

"बॉयलरप्लेट" के प्रदर्शन के साथ कुछ लेना देना नहीं है: इसका मतलब मानक कोड है जो किसी एप्लिकेशन को परिभाषित करने या कुछ ढांचे के साथ काम करने के लिए आवश्यक है। यह कोड है जो प्रत्येक एप्लिकेशन में समान होने की संभावना है।

दूसरी तरफ, "हॉट स्पॉट" का अर्थ कोड के एक हिस्से का अर्थ है जिसे कई बार निष्पादित किया जाता है और इसलिए इसका प्रदर्शन समग्र अनुप्रयोग प्रदर्शन के लिए बहुत मायने रखता है। आम तौर पर वास्तविक प्रोफाइलिंग द्वारा एक गर्म स्थान की पहचान की जाती है: यदि यह कई बार निष्पादित होता है तो यह एक गर्म स्थान नहीं है लेकिन यह इतना छोटा है कि प्रदर्शन पर इसका प्रभाव न्यूनतम है।

4

Boilerplate code

'हॉट कोड "स्केलेबल अच्छी तरह से लिखा कोड है

" हॉट स्पॉट "गहन गतिविधि का एक क्षेत्र है। वे हॉट स्पॉट हैं क्योंकि उन्हें अक्सर कोड निष्पादित किया जाता है।

2

"हॉट स्पॉट" की एक परिभाषा कोड का एक क्षेत्र है जहां कार्यक्रम काउंटर अपने समय का एक अच्छा अंश खर्च करता है। एक संबंधित शब्द "बाधा" है, जबकि बीमार परिभाषित, आमतौर पर एक फ़ंक्शन, दिनचर्या या विधि के लिए स्थानीय कोड को संदर्भित करता है, जो आवश्यक से अधिक समय व्यतीत करने का कारण बनता है।

ये दोनों शब्द बहुत भ्रामक हैं, क्योंकि वहां एक बड़ी अनजान धारणा है। धारणा यह है कि ऐसे कार्यक्रम को गति देने के कोई अवसर नहीं हैं जो हॉटस्पॉट या बाधा नहीं हैं। स्पीडअप अवसर उससे अधिक फैल सकते हैं, और यदि वे नहीं पाए जाते हैं और निश्चित होते हैं, तो वे प्रदर्शन 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.

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^