2008-11-14 10 views
51

के लिए प्रोफाइलर और मेमोरी विश्लेषण उपकरण हाल ही में मैंने डेल्फी 4 से डेल्फी 200 तक अपग्रेड किया। डेल्फी 4 के साथ मैं प्रोफाइलर और लीक डीबगिंग के लिए प्रोफाइलर के रूप में GpProfile by Primoz Gabrijelcic और Memory Sleuth by Turbo Power का उपयोग कर रहा था। दोनों ने मेरे लिए अच्छा काम किया। लेकिन अब मुझे नए उपकरण की आवश्यकता है जो डेल्फी 200 9 के साथ काम करेंगे।डेल्फी

व्यापक मार्जिन द्वारा डेल्फी के लिए प्रोफाइलिंग/विश्लेषण उपकरण में नेता स्पष्ट रूप से AQTime by AutomatedQA है। उन्होंने हाल ही में Memproof by Atanas Soyanov को भी गड़बड़ कर दिया, जिसे मैंने समझा और एक उत्कृष्ट स्मृति मुक्त उपकरण था, और इसकी कार्यक्षमता को एकटाइम में शामिल किया। लेकिन AQTime एक व्यक्तिगत प्रोग्रामर के लिए बहुत महंगा है। यह वास्तव में डेल्फी 200 लागत के उन्नयन से अधिक लागत है!

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


Addenum: यह जल्दी answerers संकेत कर रहे हैं कि FastMM प्रबंधक पहले से ही डेल्फी में शामिल मेमोरी लीक को खोजने के लिए बहुत अच्छा है लगता है।

तो फिर, स्रोत कोड प्रोफाइलिंग के लिए कोई अच्छा विकल्प हैं?

एक मैं उत्सुक हूं कि ProDelphi by Michael Adolph है जो AQTime की लागत से एक छठी से कम है। क्या तुम इसका इस्तेमाल करते हो? क्या एकटाइम छह गुना ज्यादा भुगतान करने लायक है?


Addenum 2: मैंने AQTime और ProDelphi दोनों के परीक्षण संस्करण डाउनलोड किए।

एकटाइम थोड़ा जबरदस्त था और पहले थोड़ा उलझन में था। इसे हुक करने के लिए आवश्यक कुछ युक्तियों को खोजने में कुछ घंटे लग गए।

प्रोडेलफी जीपीप्रोफाइल की तरह बहुत अधिक था जिसका उपयोग मैंने किया था। लेकिन इसकी खिड़कियां उलझन में हैं और उलझन में हैं और यह जीपीप्रोफाइल के रूप में काफी अच्छा नहीं है।

मेरे लिए

बड़ा मतभेद होने लगते हैं:

  1. ProDelphi अपने कोड बदल जाता है। AQTime नहीं करता है। कुछ गलत होने पर कोड बदलना आपके डेटा को दूषित कर सकता है, लेकिन जीपीप्रोफाइल के साथ मेरा अनुभव यह था कि यह मेरे साथ कभी नहीं हुआ। एकटाइम के लिए प्लस वन।

  2. प्रोडेलफी आपको ऑप्टिमाइज़ेशन बंद करने की आवश्यकता है। लेकिन आप जो प्रोफाइल करना चाहते हैं वह आपका प्रोग्राम ऑप्टिमाइज़ेशन के साथ है, जिस तरह से इसे चलाया जाएगा। एकटाइम के लिए प्लस वन।

  3. प्रोडेलफी केवल फ़ंक्शन या प्रक्रिया पर प्रोफ़ाइल कर सकता है। AQTime अलग-अलग लाइनों पर जा सकता है। AQTime के लिए प्लस 2।

  4. प्रोडेलफी में एक निःशुल्क संस्करण है जो 20 दिनचर्या प्रोफाइल करेगा, और इसके समर्थक संस्करण की लागत $ 100 अमरीकी डालर से कम होगी। एकटाइम $ 600 अमरीकी डालर है। ProDelphi के लिए प्लस 4।

स्कोर अब 4-4 है। तुम क्या सोचते हो?


Addenum 3: Primoz Gabrijelcic जीपीप्रोफाइल फिर से काम करने की योजना बना रहा है। नीचे दी गई कुछ प्रतिक्रियाओं पर उनकी टिप्पणियां देखें। वह StackOverflow पर Gabr के रूप में।


Addenum 4: ऐसा लगता है कि सभी के बाद एक प्रोफाइलर समाधान हो सकता है। Andre's open source asmprofiler, described below देखें।

+0

क्षमा करें, मुझे केवल एकटाइम के साथ अनुभव है। –

+0

क्या आपको लगता है कि यह व्यय के लायक है? – lkessler

+2

आपको एकटाइम के समय-सीमित डेमो का प्रयास करना चाहिए। मुझे अपने लैपटॉप पर बहुत सारी समस्याएं थीं जो 120 डीपीआई पर सेट की गई थीं - कुछ संवाद वास्तव में अनुपयोगी थे क्योंकि बटन काट दिया गया था। इससे ज्यादा आत्मविश्वास नहीं हुआ, और समर्थन ने कहा कि वे इसके बारे में कुछ भी नहीं कर सके ... :-( – mghie

उत्तर

34

कीमत के लिए, आप फास्टएमएम 4 को मेमोरी ट्रैकर के रूप में नहीं हरा सकते हैं। डेल्फी के साथ अभी तक शक्तिशाली और अच्छी तरह से एकीकृत करना आसान है।
मुझे लगता है कि आप जानते हैं कि कि, डाउनलोड, स्थापित या कुछ और बदल रहा है, बस अपने कोड में

ReportMemoryLeaksOnShutDown := True; 

कहीं भी इस लाइन डाले बिना, स्मृति लीक की बुनियादी रिपोर्टिंग सक्षम हो जाएगा।
यदि आपको क्रैश जानकारी की तरह अधिक आवश्यकता है, तो यूरेकालॉग एक बहुत अच्छा उत्पाद है जिसका हम उपयोग करते हैं। MadExcept भी एक अच्छी प्रतिष्ठा है ...

विशेष रूप से प्रोफाइलिंग के लिए, हमारे पास AQTime है।

जीपीप्रोफाइल के लिए, आप अद्यतन के लिए एसओ पर gabr कोशिश कर सकते हैं और update gpProfile yourself as it is open source पर जा सकते हैं। ;-)

+3

वर्तमान सार्वजनिक स्रोत बहुत पुराना है। मेरे पास मेरी डिस्क पर बहुत नया संस्करण है, लेकिन यह अभी भी 'प्रगति पर काम' राज्य में बहुत अधिक है और मैं इस तरह के टूटे हुए कोड को प्रदर्शित करने के लिए पर्याप्त बहादुर नहीं हूं। मैं Google कोड पर जीपीप्रोफाइल डालने की योजना बना रहा हूं जैसे ही यह आंशिक रूप से फिर से काम कर रहा है। – gabr

+0

हैलो गैबर! पता नहीं था कि आप अभी भी आसपास थे, और मुझे लगता है कि आप विशेष रूप से स्टैक ओवरफ्लो पर सक्रिय हैं। मैंने डेल्फी 4 के साथ लगभग 10 वर्षों तक आपके जीबीप्रोफाइल का बहुत खुशी से उपयोग किया है। महान उत्पाद, और उस समय के लिए बहुत उन्नत है। मुझे यहां आपके द्वारा पोस्ट किए गए प्रश्न का उत्तर सुनना अच्छा लगता है। – lkessler

+1

पी। Gabr: आपका OmniThreadLibrary बहुत दिलचस्प लग रहा है! मैंने कभी थ्रेडिंग का प्रयास नहीं किया है क्योंकि यह हमेशा इतना जटिल लग रहा था, लेकिन आपकी लाइब्रेरी इसे बहुत आसान बनाती है। – lkessler

1

यह सच है, प्रोफाइलिंग के लिए मैं Primoz 'GpProfile को याद करता हूं, और एक अच्छा प्रतिस्थापन नहीं मिला है। मैंने एक बार एकटाइम की कोशिश की, लेकिन कीमत के लिए इसके साथ बहुत खुश नहीं था।

मेमोरी लीक और डोडी मेमोरी एक्सेस की ट्रैकिंग के लिए हालांकि मैं FastMM4 के साथ जितना खुश नहीं हो सकता था।

+1

मैं वादा करता हूं कि मैं एक नई रिलीज पर काम करूंगा कठिन! मुझे जीपीप्रोफाइल भी याद आती है (और सौभाग्य से ऐसा लगता है कि मुझे जल्द ही इसकी आवश्यकता होगी ...) – gabr

+0

जीपीप्रोफाइल पर कोई खबर? –

2

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

+0

उस सुझाव के लिए धन्यवाद। I पहले SmartInspect के बारे में नहीं सुना था। यह AQTime की आधा कीमत है। – lkessler

+6

SmartInspect एक लॉगर है। मैं नहीं देखता कि इसकी तुलना वास्तविक प्रोफाइलर से कैसे की जा सकती है। क्या तुम समझा सकते हो? –

7

मैं प्रोफाइलिंग के लिए AQtime से बहुत खुश हूं।

+1

यदि आपके पास आरएडी एक्सई का एंटरप्राइज़ या आर्किटेक्ट संस्करण है, तो एकटाइम लाइट संस्करण अब डेल्फी के साथ शामिल है। –

+0

यह स्मृति और समय दोनों प्रोफाइलिंग करता है –

23

इसके अलावा Eric Grange's Sampling Profiler

+2

नमूनाकरण प्रोफाइलर्स ने कभी मेरे लिए यह नहीं किया है, लेकिन हमारे सुझाव के लिए धन्यवाद क्योंकि यह कुछ लोगों के लिए उपयोगी हो सकता है। – lkessler

+1

समस्या यह है कि वे पर्याप्त जानकारी का नमूना नहीं देते हैं। अगर वे पूरे कॉल स्टैक को कैप्चर करते हैं तो वे आपको बता सकते हैं कि कौन से कॉल निर्देश आपको सबसे ज्यादा खर्च कर रहे हैं। वास्तव में नमूने की एक बड़ी संख्या से उच्च परिशुद्धता प्राप्त करने के बजाय ऐसा करना अधिक महत्वपूर्ण है। –

+2

यह @ एरिक ग्रेंज के अच्छी तरह से उपलब्ध सर्वोत्तम नमूना उपकरण में से एक है इसे – VibeeshanRC

2

मैं ProDelphi के इंटरफेस के बारे में आपसे सहमत हूँ पर एक नजर डालें, लेकिन यह एक अच्छा पर्याप्त काम है कि हम इसके साथ रहने के लिए खुश हैं करता है। जब हमारे पास महत्वपूर्ण प्रदर्शन समस्या होती है, तो हमें केवल कभी-कभी प्रोफ़ाइल करने की आवश्यकता होती है, और यह हमेशा हमें समस्या को जल्दी से ढूंढने में मदद करता है। पैसे के लिए बहुत अच्छा मूल्य, और माइकल इसे नए संस्करणों के लिए अद्यतन रखने के बारे में बहुत अच्छा लगता है।

एक बात जो मैं सुझाऊंगा वह यह है कि क्योंकि इसे कोड को सम्मिलित करने की आवश्यकता होती है, जिसमें किसी भी प्रकार के वीसीएस में सभी प्रासंगिक कोड अमूल्य हैं। जब हम प्रोफ़ाइल, हम की जरूरत है:

  • में

    • चेक सभी प्रासंगिक फ़ाइलें उन सब को रद्द सब checkouts की जाँच करें
    • क्या रूपरेखा हम की जरूरत है, तो
    • , प्रभावी रूप से हम कहाँ थे करने के लिए वापस रोलिंग ।
  • +0

    रखो मेरे मामले में एक वीसीएस ओवरकिल है। मैं जो करता हूं वह मेरी पूरी कार्यशील निर्देशिका को उसी निर्देशिका की "प्रतिलिपि" में कॉपी करता है। फिर मेरे पास वापस आने के लिए यह छोटा है। मैं वास्तव में ऐसा कर सकता हूं जो हर महत्वपूर्ण बदलाव के लिए हो सकता है। – lkessler

    4

    जीपीप्रोफाइल और एकटाइम दोनों का उपयोग करने के बाद मैंने दोनों को यह पता लगाने में प्रभावी पाया है कि कौन सी विधि कॉल बोतल की गर्दन पैदा कर रही है।

    हालांकि एकटाइम मुझे यह भी बता सकता है कि कोड का कौन सा लाइन मेरे स्रोत कोड में कोई बदलाव किए बिना (हालांकि यह टीडी 32 डीबगिंग और डीबग डीकस के साथ सबसे अच्छा काम करता है)।

    मैं हाल ही में इसके लिए अपने आप को भुगतान करने के लिए इसके बारे में 30x (एक आंतरिक पुस्तकालय समारोह का बुरा उपयोग के कारण) द्वारा एक नियमित तेजी लाने के लिए इस्तेमाल किया

    हालांकि मैं नहीं था!

    +1

    30x असामान्य नहीं है यदि आप निर्देश-स्तर की लागत प्राप्त कर सकते हैं। मैं इसे एक हाथ से रोकता हूं, कुछ बार रोकें और कॉल स्टैक रिकॉर्ड कर रहा हूं। अगर कुछ कॉल 30 चक्रों में से 2 9 को बर्बाद कर रही हैं, तो आपको इसे देखने के लिए 1000 नमूने की आवश्यकता नहीं है। –

    2

    किसी को भी करने की कोशिश की the Profiler component at Delphi Area? यह स्रोत के साथ फ्रीवेयर है और यह writeup कहते है है:

    आप देख रहे हैं एक आसान और सही तरीका मुक्त करने के लिए अपने कोड के निष्पादन समय को मापने के लिए के लिए, TProfiler है क्या आप की जरूरत है। टीप्रोफाइलर गैर-दृश्य और डिबगिंग घटक है जो आपको अपने कोड में नाम टाइमर बनाने में सक्षम बनाता है।

    TProfiler से प्रत्येक टाइमर निम्नलिखित जानकारी प्रदान करता है:

    देखे जाने की संख्या टाइमर था सक्रिय (मारो गणना) कुल निष्पादन समय पर प्रत्येक हिट के निष्पादन समय पर औसत निष्पादन समय पहले निष्पादन समय मारा पिछले अधिकतम निष्पादन समय

    29

    मैंने साथ हिट न्यूनतम निष्पादन समय के साथ हिट हिट पर डेल्फी के लिए ओपन सोर्स प्रोफाइलर बनाया: http://code.google.com/p/asmprofiler/

    यह सही नहीं है, लेकिन यह मुफ़्त और खुला स्रोत है :-)।

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

    +0

    आपके प्रयास के लिए धन्यवाद! मैं इसे देख लूँगा! –

    +3

    +1 और यह बहु-थ्रेडेड ऐप्स के साथ काम करता है – mjn

    +0

    बहुत अच्छा लगता है, धन्यवाद। –

    3

    हम एकटाइम प्रो का उपयोग करते हैं और इससे खुश हैं। स्मार्टबियर ने हाल ही में एक पूरी तरह से मुक्त AQTime standard edition जारी किया है। सुविधाओं में से अधिकांश अभी भी देखते हैं, लेकिन वे निश्चित रूप से है removed a bit

    0

    FastMM4 स्मृति प्रबंधक mentioned in this older answer ("कैसे की निगरानी या एक डेल्फी आवेदन की स्मृति विखंडन कल्पना करने के लिए") सभी आवंटन जिस पर पूछे जा सकती है की एक सूची रखता है रन टाइम (और शामिल डेमो एप्लिकेशन का उपयोग कर ग्रिड में प्रदर्शित)। यह बिल्कुल दिखाता नहीं है कि कौन सा ऑब्जेक्ट लीक है, क्योंकि आंकड़े प्रति ब्लॉक आकार हैं। लेकिन यह उत्पादन में अनुप्रयोगों की लंबी अवधि की निगरानी के लिए उपयोगी हो सकता है, उदाहरण के लिए सर्वर या सेवाएं। मैं वर्तमान में इसे 'वाणिज्यिक) वेब अनुप्रयोग सर्वर ढांचे में' विजुअलएमएम 'ऐड-ऑन के रूप में एकीकृत कर रहा हूं।

    1

    मैं लंबे समय से ProDelphi का उपयोग कर रहा हूं & यह मेरी आवश्यकताओं को पूरा करता है।

    मैं प्रदान किए गए डेटा का उपयोग करके सिस्टम प्रदर्शन सुधार में शानदार परिणाम प्राप्त करने में सक्षम हूं।

    छोटी परियोजनाओं के लिए मुफ्त संस्करण ठीक है।

    बड़ी परियोजनाओं के लिए, आपको (भुगतान) समर्थक संस्करण की आवश्यकता होगी।