2008-11-26 10 views
12

मैं यह देखने के लिए the performance and memory profiler AQTime का परीक्षण कर रहा हूं कि यह मेरे डेल्फी एप्लिकेशन के लिए उन बड़े $$$ खर्च करने योग्य है या नहीं।एकटाइम यह कैसे करता है?

मुझे आश्चर्य है कि यह आपको स्रोत लाइन स्तर के प्रदर्शन ट्रेसिंग (जिसमें प्रत्येक पंक्ति को कितनी बार निष्पादित किया गया था और उस समय की मात्रा में कितनी बार शामिल किया गया था) आवेदन के स्रोत कोड को संशोधित किए बिना और अनियमित राशि को जोड़ने के बिना डीबग रन के लिए समय का।

जिस तरह से वे इसे इतना कुशलतापूर्वक करते हैं, मुझे लगता है कि यहां कुछ तकनीकों/तकनीकों का उपयोग किया जा सकता है जिन्हें मैं नहीं जानता कि इसके बारे में जानना उपयोगी होगा।

क्या आप जानते हैं कि कोड परिवर्तन के बिना निष्पादन लाइन-दर-रेखा को कैप्चर करने के लिए वे किस तरह के तरीकों का उपयोग करते हैं?

क्या अन्य प्रोफाइलिंग उपकरण हैं जो गैर-आक्रामक लाइन-बाय-लाइन जांच भी करते हैं और यदि ऐसा है, तो क्या वे एक ही तकनीक का उपयोग करते हैं?

+0

एकटाइम उपयुक्त है। मुझे यह पसंद है। पूरी तरह से इसकी सिफारिश करें। –

उत्तर

7

यह सिर्फ अटकलें है, लेकिन शायद एकटाइम ऐसी तकनीक पर आधारित है जो Microsoft Detours के समान है?

मार्ग-परिवर्तन x86, x64, और IA64 मशीनों पर मनमाना Win32 कार्यों instrumenting के लिए एक पुस्तकालय है। Detours लक्ष्य कार्यों के लिए इन-मेमोरी कोड को फिर से लिखकर Win32 फ़ंक्शंस को रोकता है।

+0

होना चाहिए! किसी को कुछ अलग जानने के अलावा, मैं आपको जवाब दे रहा हूं। – lkessler

+4

कुछ लोग इसे "हुकिंग" कहते हैं। MadCodeHook डेल्फी के लिए एक उपकरण है जो आपको उपकरण कोड देगा। दिलचस्प बात यह है कि कोड हुकिंग की एक सीमा यह है कि आप उन कार्यों को हुक नहीं कर सकते जो इनलाइन संशोधन की अनुमति देने के लिए बहुत कम हैं। AQTime फ़ंक्शन रिपोर्ट करता है जो हुक को अनुमति देने के लिए बहुत छोटे होते हैं, और आप जो भी कर सकते हैं उन्हें अनदेखा कर सकते हैं।इससे मुझे लगता है कि निश्चित रूप से, हुकिंग (वाद्य यंत्र, अवरोध) एकटाइम करता है। –

2

मुझे विशेष रूप से डेल्फी के बारे में पता नहीं है, लेकिन एक सी अनुप्रयोग डीबगर लाइन-दर-लाइन प्रोफाइलिंग अपेक्षाकृत आसानी से कर सकता है - यह कोड लोड कर सकता है और कोड के ब्लॉक के साथ प्रत्येक कोड पथ को जोड़ सकता है। फिर यह सभी सशर्त कूद निर्देशों को तोड़ सकता है और देख सकता है कि कौन सा कोड पथ लिया जाता है। जीडीबी जैसे डीबगर्स अपेक्षाकृत कुशलता से काम कर सकते हैं क्योंकि वे कर्नेल के माध्यम से काम करते हैं और कोड को संशोधित नहीं करते हैं, जब प्रत्येक पंक्ति को निष्पादित किया जाता है तो उन्हें सूचित किया जाता है। यदि कुछ ब्लॉक को प्रारंभिक (longjmp) से बाहर निकलने का कारण बनता है, तो डीबगर इसे हुक कर सकता है और यह पता लगा सकता है कि जब यह हुआ तब ब्लॉक में कितना दूर आया और केवल उन पंक्तियों में वृद्धि हुई।

बेशक, यह कोड करना मुश्किल होगा, लेकिन जब मैं आसानी से कहता हूं तो मेरा मतलब है कि आप काउंटर को अपडेट करने के लिए प्रत्येक निर्देश पर समय तोड़ने के बिना इसे कर सकते हैं।

2

लंबे समय से निष्क्रिय टर्बोपावर के पास स्लेथ क्यूए सूट नामक डेल्फी के लिए एक महान प्रोफाइलिंग/विश्लेषण उपकरण भी था। मैंने इसे एकटाइम से बहुत आसान पाया, लेकिन सार्थक परिणाम प्राप्त करना भी आसान है। ट्रैक करने की कोशिश करने लायक हो सकता है - ईबे, शायद?

+0

शायद डेल्फी के बारे में काम करेगा 5. –

9

मैं जो एक ही करता है डेल्फी के लिए एक खुला स्रोत प्रोफाइलर कर दिया है: http://code.google.com/p/asmprofiler/

यह सही नहीं है, लेकिन यह मुफ़्त :-) है। Detour तकनीक का भी उपयोग करता है। यह प्रत्येक कॉल को स्टोर करता है (आपको मैन्युअल रूप से सेट करना होगा कि आप कौन से फ़ंक्शन प्रोफाइल करना चाहते हैं), ताकि यह एक सटीक कॉल इतिहास पेड़ बना सके, जिसमें एक समय चार्ट (!) शामिल है।

+2

धन्यवाद और महान काम, आंद्रे। मैं इसे आजमाने की कोशिश कर रहा हूं। डेल्फी समुदाय वास्तव में डेल्फी के आईडीई में एक प्रोफाइलर एकीकृत अधिकार का उपयोग कर सकता है। चूंकि आपको इसे ओपन सोर्स मिला है, इसलिए आप इसे एम्बरकेडरो को दान करने पर विचार करना चाहेंगे और इसमें इसे शामिल किया जा सकता है। या $ 200 एक पॉप के लिए इसे बाजार। – lkessler

+0

अब यह एक है! आरएडी स्टूडियो एक्सई एंटरप्राइज और आर्किटेक्ट में अब एकटाइम लाइट शामिल है। यह सही में बनाया गया है। एएनडी अगर आप एकटाइम समर्थक खरीदते हैं, तो यह पूरी तरह से आईडीई में एकीकृत होता है या आप इसे स्टैंडअलोन का उपयोग कर सकते हैं। –

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