मैं सिर्फ NYTProf प्रलेखन को यह जोड़ दिया है: एक बयान प्रोफाइलर है कि जब अनुरोध किया गया: अगर वक्तव्य और उपनेमका समय
NYTProf मेल नहीं खाते
= head2 दो प्रोफाइलर है पर्ल एक से दूसरे पर्ल बयान से चलता है, और एक सबरूटीन प्रोफाइलर कि लागू है जब पर्ल कॉल या एक सबरूटीन से रिटर्न।
एक सबरूटीन के लिए व्यक्तिगत बयान समय आमतौर पर सबरूटीन के लिए विशेष समय की तुलना में थोड़ा कम जोड़ें। ऐसा इसलिए है क्योंकि सबरूटीन कॉल और वापसी ओवरहेड्स की हैंडलिंग सबरूटीन के लिए विशेष समय में शामिल किया गया है है। अंतर केवल एक नया माइक्रोसेकंड हो सकता है लेकिन है कि सबरूटीन्स कि बार के हजारों की बुलाया सैकड़ों के लिए ध्यान देने योग्य हो सकता है।
कथन प्रोफाइलर ट्रैक करता है कि लेखन कथन प्रोफाइल डेटा डिस्क पर ओवरहेड पर कितना समय व्यतीत किया गया था। सबरूटीन प्रोफाइलर ओवरहेड्स है में प्रवेश करने और करने के क्रम में सबरूटीन छोड़ने एक और अधिक सटीक प्रोफ़ाइल दे के बीच जमा घटा देती है। कथन प्रोफाइलर आमतौर पर बहुत तेज होता है क्योंकि अधिकतर लिखने के लिए ज़िप संपीड़न के लिए बफर किया जाता है, इसलिए प्रोफाइलर ओवरहेड प्रति स्टेटमेंट बहुत छोटा होता है, अक्सर एक 'टिक' होता है। परिणाम यह है कि संचित ओवरहेड काफी शोर है। यह सबराउटिन के लिए अधिक महत्वपूर्ण हो जाता है कि को अक्सर बुलाया जाता है और तेज़ भी होता है। यह एक और, छोटे, विसंगति बयान समय और अनन्य बार के बीच करने के लिए योगदान हो सकता है।
शायद यह कथन समय कॉलम (31.7) के योग और subroutine (57.2s) के लिए विशेष समय के बीच अंतर बताता है। अंतर प्रति कॉल लगभग 100 माइक्रोसॉन्ड की मात्रा है (जो थोड़ा अधिक लगता है, लेकिन अनावश्यक रूप से ऐसा नहीं है)।
बयान प्रोफाइलर कितना समय खर्च पर खर्च किया गया था, डिस्क पर बयान प्रोफ़ाइल डेटा तैयार करने जैसा का ट्रैक रखता है। सबराउटिन प्रोफाइलर एक अधिक सटीक प्रोफ़ाइल देने के लिए सबराउटिन में प्रवेश करने और छोड़ने के बीच ओवरहेड्स में अंतर को घटा देता है।
कथन प्रोफाइलर आमतौर पर बहुत तेज़ होता है क्योंकि अधिकांश लिखने के लिए ज़िप संपीड़न के लिए buffered मिलता है, इसलिए प्रति कथन प्रोफाइलर ओवरहेड बहुत छोटा होता है, अक्सर एक 'टिक' होता है। नतीजा यह है कि संचित ओवरहेड काफी शोर है। यह उन सबराउटिन के लिए अधिक महत्वपूर्ण हो जाता है जिन्हें अक्सर कहा जाता है और तेज़ भी होते हैं (इस मामले में 250303 कॉल 89 9 6/कॉल पर)। इसलिए मुझे संदेह है कि यह कथन समय और विशेष समय के बीच विसंगति में एक और छोटा, योगदान है।
= head2 शीर्षक उपनेमका समय कहा जाता है Subs मेल नहीं खाते हैं
कुल मिलाकर सबरूटीन बार की तरह एक शीर्षक के साथ रिपोर्ट कर रहे हैं "खर्च:
इससे भी महत्वपूर्ण बात, मैं भी इस अनुभाग जोड़ दिया है 10s (2 + 8) भीतर ... "। इस उदाहरण में, सेकंड सबराउटिन ("समावेशी समय") के अंदर और के अंदर बिताए गए थे, में 8 सेकंड खर्च किए गए सबराउटिन इस द्वारा बुलाए गए थे। यही कारण है कि समय में खर्च सबरूटीन कोड में ही ( "अनन्य समय", कभी कभी भी "आत्म समय" कहा जाता है) के रूप में 2 सेकंड छोड़ देता है।
रिपोर्ट सबरूटीन के स्रोत कोड को दर्शाता है। उन कॉलों में बिताए गए समय के ब्योरे के साथ अन्य सबराउटिन पर पर कॉल करने वाली रेखाएं हैं।
कभी कभी सबरूटीन में कोड की लाइनों द्वारा किए गए कॉल के लिए समय की राशि समावेशी अनन्य समय में रिपोर्ट शीर्षक से भी कम है (10-2 उदाहरण में = 8 सेकंड ऊपर) ।
यहाँ क्या हो रहा है कहता है कि करने के लिए अन्य सबरूटीन्स किए जा रहे हैं लेकिन NYTProf बुला स्थान सही ढंग से निर्धारित करने के लिए इतना कॉल सही जगह पर रिपोर्ट में दिखाई नहीं देते में सक्षम नहीं है।
पर्ल के एक पुराने संस्करण का उपयोग करते हुए एक कारण (see below) है। दूसरा सबराउटिन को कॉल कर रहा है जो "गोटो & सब के माध्यम से बाहर निकलता है;" - मेमोइज़ मॉड्यूल का उपयोग करते हुए AUTOLOAD सबस और कोड में सबसे अधिक बार का सामना करना पड़ा।
सामान्य में समग्र सबरूटीन समय सही है और बयान या नेस्टेड सब कॉल समय की राशि से अधिक पर भरोसा होना चाहिए।
ज्ञापन मॉड्यूल प्राथमिक रूप से आपकी रिपोर्ट में विसंगति का कारण है। Memoize::__ANON__[...]
पर कॉल ज्ञापन द्वारा उत्पन्न उप निष्पादित करें जो sub { unshift @_, $cref; goto &_memoizer; }
जैसा दिखता है। उस goto &_memoizer
को कॉलर को एक प्रकार की वापसी के रूप में लागू किया गया है, जिसके बाद निर्दिष्ट उप को कॉल किया गया है, और इसी तरह NYTProf इसे प्रोफाइल करता है।
भ्रम तथ्य यह है कि, हालांकि add_bit_to_map
_memoizer
तो कॉल में समय add_bit_to_map
में जुड़ जाता है की फोन करने वाले के रूप में दर्ज किया जा रहा है, कॉल की फ़ाइल और लाइन नंबर स्थान के स्थान के रूप में दर्ज किया गया है के कारण होता है goto
।
भविष्य में रिलीज में इसे सुधारना संभव हो सकता है।
मुझे इसकी जांच करने और दस्तावेज़ीकरण में सुधार करने के लिए धन्यवाद देने के लिए धन्यवाद।
टिम बन्स।
पेज। मैं mailing list पर NYTProf के बारे में प्रश्न पूछने की सलाह देता हूं।
हम्म, मेरे पास आपके लिए कोई जवाब नहीं है, लेकिन कह सकता है कि मैंने NYTProf का उपयोग करके समान विसंगतियों को देखा है। यह बताया गया कि मेरी लिपि सीसीए 5 मिनट तक चली गई जब इसमें लगभग 10 सेकंड लग गए। वह mod_perl के तहत था। – jira
क्या आप हमें रिपोर्ट का एक स्क्रीनशॉट दिखा सकते हैं, या कुछ और ताकि हम विशेष मामला देख सकें? –
@brian d foy: मैंने अपने कुछ आउटपुट – mmccoo