आसान शुरू करने के लिए समारोह कॉल के लिए बाइट कोड को स्कैन और कॉल सुई है/टाइमर रोक?
या यह वास्तव में कठिन है और यही कारण है कि लोग ऐसा करने के लिए टूल का भुगतान करते हैं?
कॉल इंजेक्शन करना काफी कठिन है कि इसे करने के लिए उपकरण की आवश्यकता है।
न केवल यह कठिन है, यह बाधाओं को खोजने का एक बहुत ही अप्रत्यक्ष तरीका है। कारण यह है कि एक बाधा आपके कोड में एक या एक छोटी संख्या में बयान है जो समय के एक अच्छे प्रतिशत के लिए ज़िम्मेदार है, समय जो काफी कम हो सकता है - यानी यह वास्तव में जरूरी नहीं है, यानी यह अपमानजनक है। यदि आप अपने दिनचर्या (आईओ समय सहित) के औसत समावेशी समय को बता सकते हैं, और यदि आप इसे कितनी बार बुला सकते हैं, और कुल समय से विभाजित करके इसे गुणा कर सकते हैं, तो आप बता सकते हैं कि कितना प्रतिशत नियमित लेता है। यदि प्रतिशत छोटा है (10% की तरह) तो आपको शायद कहीं और बड़ी समस्याएं हो सकती हैं। यदि प्रतिशत बड़ा है (20% से 99% की तरह) तो आप नियमित रूप से एक बाधा उत्पन्न कर सकते हैं। तो अब आपको दिनचर्या के अंदर शिकार करना है, जो इसे कॉल करता है और कितना समय वे लेते हैं। इसके अलावा आप रिकर्सन (कॉल ग्राफ़ के बगबू) द्वारा भ्रमित होने से बचना चाहते हैं।
लिनक्स, शार्क, & अन्य के लिए प्रोफाइलर (जैसे Zoom) हैं जो एक अलग सिद्धांत पर काम करते हैं। सिद्धांत यह है कि एक फ़ंक्शन कॉल स्टैक होता है, और हर समय एक दिनचर्या के लिए ज़िम्मेदार होता है (या तो काम कर रहा है या अन्य दिनचर्या के लिए अनुरोध करने के लिए इंतजार कर रहा है) यह स्टैक पर है। तो यदि यह 50% समय (कहना) के लिए ज़िम्मेदार है, तो यह उस समय की मात्रा है जब यह स्टैक पर है, चाहे कितनी बार इसे कॉल किया गया हो या प्रति कॉल कितना समय लगे। न केवल स्टैक पर दिनचर्या है, लेकिन समय की लागत वाली कोड की विशिष्ट रेखाएं भी ढेर पर हैं। आपको उनके लिए शिकार करने की आवश्यकता नहीं है। एक और चीज जिसकी आपको आवश्यकता नहीं है वह माप की सटीकता है। यदि आपने 10,000 स्टैक नमूने लिया है, तो दोषी लाइनों को 50 +/- 0.5 प्रतिशत पर मापा जाएगा। यदि आप 100 नमूने लेते हैं, तो उन्हें 50 +/- 5 प्रतिशत के रूप में मापा जाएगा। यदि आपने 10 नमूने लिया, तो उन्हें 50 +/- 16 प्रतिशत के रूप में मापा जाएगा। प्रत्येक मामले में आप उन्हें पाते हैं, और यह आपका लक्ष्य है। (और रिकर्सन कोई फर्क नहीं पड़ता। इसका मतलब यह है कि दी गई रेखा किसी दिए गए स्टैक नमूने में एक से अधिक बार दिखाई दे सकती है।)
इस विषय पर, बहुत भ्रम है। किसी भी दर पर, प्रोफाइलर्स जो बाधाओं को ढूंढने के लिए सबसे प्रभावी हैं वे हैं जो स्टैक का नमूना देते हैं, दीवार घड़ी के समय पर, और लाइन द्वारा रिपोर्ट प्रतिशत। (यह देखना आसान कुछ myths about profiling परिप्रेक्ष्य में डाल रहे हैं है।)
स्रोत
2011-04-28 15:33:33
मैं जॉन स्कीट के लिए प्रतीक्षा करें। –
इस आलेख में बहुत अच्छी जानकारी है: http://msdn.microsoft.com/en-us/magazine/cc301725.aspx। इसके अलावा http://msdn.microsoft.com/en-us/library/bb384547.aspx –
आम तौर पर बहुत से प्रोफाइलर स्टैक के बहुत ही स्नैपशॉट लेते हैं यह देखने के लिए कि यह वर्तमान में कहां है। फिर वे उन स्नैपशॉट्स का उपयोग करके आंकड़े बनाते हैं। बेशक यह अलग संभावना है कि यह सी # के मामले में नहीं है, इसलिए इसे नमक के अनाज के साथ लें। –