कृपया एक नज़र at this और this ले।
किसी भी धागे पर विचार करें। समय के किसी भी समय यह कुछ कर रहा है, और यह किसी कारण से कर रहा है, और धीमेपन को उस समय के रूप में परिभाषित किया जा सकता है जब वह खराब कारणों से खर्च करता है - उसे उस समय खर्च करने की आवश्यकता नहीं होती है।
समय पर एक बिंदु पर धागे का स्नैपशॉट लें। हो सकता है कि यह किसी कैश में एक कथन में, एक कथन में, किसी फ़ंक्शन में, किसी अन्य फ़ंक्शन में कॉल निर्देश से बुलाया जाता है, जिसे दूसरे से कहा जाता है, और इसी तरह, call _main
तक। उन चरणों में से प्रत्येक का एक कारण है, कि कोड की एक परीक्षा से पता चलता है।
- यदि इनमें से कोई भी कदम एक बहुत अच्छा कारण नहीं है और इससे बचा जा सकता है, तो उस समय के तत्काल खर्च करने की आवश्यकता नहीं है।
उस समय डिस्क निश्चित क्षेत्र के लिए चारों ओर आ रहा है पर
हो सकता है, तो कुछ डेटा स्ट्रीमिंग शुरू किया जा सकता है, तो एक बफर भरा जा सकता है, तो एक पढ़ा बयान संतुष्ट हो सकता है, एक समारोह में, और कहा कि समारोह है किसी अन्य फ़ंक्शन में एक कॉल साइट से कहा जाता है, और वह दूसरे से, और इसी तरह, call _main
तक, या जो भी थ्रेड के शीर्ष पर होता है।
- दोहराएँ पिछले बिंदु 1.
तो, जिस तरह से बाधाओं को खोजने के लिए जब कोड गरीब कारणों के लिए समय बिताने है मिल रहा है, और सबसे अच्छा तरीका है कि खोजने के लिए की फोटो लेने के लिए है इसके राज्य। ईआईपी, या राज्य का कोई अन्य छोटा टुकड़ा ऐसा करने वाला नहीं है, क्योंकि यह आपको क्यों नहीं बताएगा।
बहुत कम प्रोफाइलर "इसे प्राप्त करें"। जो लोग करते हैं वे वॉल-घड़ी-टाइम स्टैक-सैंपलर होते हैं जो कोड की रेखा (फ़ंक्शन द्वारा नहीं) की अवधि के अनुसार रिपोर्ट करते हैं (समय की मात्रा, विशेष रूप से "स्वयं" या "अनन्य" समय नहीं।) एक यह Zoom है, और अन्य भी हैं।
देख रहे हैं कि ईआईपी कहां लटकती है, केवल एक दूसरे हाथ के साथ घड़ी पर समय बताने की कोशिश की तरह है। मापने के कार्यों में कुछ अंकों के साथ घड़ी पर समय बताने की कोशिश करना है।केवल CPU समय के दौरान प्रोफाइलिंग, अवरुद्ध समय के दौरान नहीं, एक घड़ी पर समय बताने की कोशिश करना है जो यादृच्छिक रूप से लंबी अवधि के लिए चलना बंद कर देता है। मापन परिशुद्धता के बारे में चिंतित होना आपके दोपहर के भोजन के समय को दूसरी बार करने की कोशिश करना है।
यह एक रहस्यमय विषय नहीं है।
क्या प्रोफाइलर डेटा लेने और उन्हें इस फ़ॉर्म में रखने के लिए उपकरण हैं? –
आप इसे किस ऑपरेटिंग सिस्टम पर चलाने के लिए चाहते हैं? वहाँ सोलारिस और मैक ओएस एक्स उदाहरण प्रतिशत है कि 100% तक :-) –
कुडोस के लिए इस तरह के उपकरणों होने लगते हैं - मुझे लगता है कि यह और भी DTrace पर बनाया जा सकता है। – templatetypedef