2010-04-12 8 views
13

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

यह कुलपति ++ 2008 हम प्रयोग कर रहे है (मैं मानक संस्करण व्यक्तिगत रूप से चलाने)। मुझे नहीं लगता कि इसके लिए आईडीई में कोई उपकरण हैं, मैं मुख्य मेन्यू को देखने से कोई नहीं देख सकता हूं?

+0

देखें http://stackoverflow.com/questions/67554/whats-the-best-free-c-profiler-for-windows-if-there-are – SjB

उत्तर

10

वी.एस. में बनाया गया:

आप टीम संस्करण आप Visual Studio profiler का उपयोग कर सकते हैं।


अन्य विकल्प:

Otherwise check this thread


आसानी से अपने खुद बनाना:

मैं व्यक्तिगत रूप से एक आंतरिक एक Win32 एपीआई QueryPerformanceCounter के आधार पर बनाया का उपयोग करें। आप कोड या उससे कम की सौ पंक्तियों के भीतर उपयोग करने के लिए कुछ अच्छा और आसान बना सकते हैं।

प्रक्रिया सरल है: प्रत्येक कार्य है कि आप PROFILE_FUNC कहा जाता प्रोफ़ाइल देखने के लिए() चाहते हैं के शीर्ष पर एक मैक्रो बनाते हैं और कि आंतरिक रूप से प्रबंधित आँकड़े को जोड़ना होगा। फिर PROFILE_DUMP() नामक एक और मैक्रो है जो आउटपुट को टेक्स्ट दस्तावेज़ में डंप करेगा।

PROFILE_FUNC() एक वस्तु है कि समय की राशि लॉग इन करने के लिए जब तक वस्तु नष्ट हो जाता है आरए II का उपयोग करेगा बनाता है। इस आरएआईआई ऑब्जेक्ट और विनाशक के दोनों कन्स्ट्रक्टर QueryPerformanceCounter पर कॉल करेंगे। आप इन पंक्तियों को अपने कोड में भी छोड़ सकते हैं और #define PROFILING_ON

+0

नींद आ रहा है, अभी तक इसके बारे में पूरी तरह से सुनिश्चित नहीं है। –

+1

मुझे नफरत है कि माइक्रोसॉफ्ट ने एक बेहतरीन टूल (विजुअल स्टूडियो प्रोफेशनल) कैसे लिया और प्रोफाइलर की तरह मेरी सुविधाओं से पूरी तरह से मूल्यवान सुविधाओं की कीमत बनाई। तो मेरे द्वारा $ 600 की गारंटी प्राप्त करने के बजाय, मैं सिर्फ मिंगव का उपयोग करने जा रहा हूं और परीक्षण और त्रुटि का उपयोग कर रहा हूं। –

+0

@ क्रिस: मैं सचमुच * विश्वास नहीं कर सकता * आपके पास हकदारता की भावना है। एमएस $ 0 के लिए एक उत्कृष्ट अनुकूलन कंपाइलर और आईडीई प्रदान करता है, और अभी भी लोग whine। आपको एहसास है कि उन्हें फ्रीबी संस्करण से * कुछ * वांछनीय विशेषताओं को रखने की आवश्यकता है ताकि लोग Pro खरीद सकें, है ना? –

2

के माध्यम से व्यवहार को नियंत्रित कर सकते हैं। मैंने अपने सी ++ ऐप के त्वरित भाग के लिए अतीत में lt prof का उपयोग किया था। यह बहुत आसान काम करता है और संकलित प्रोग्राम के साथ चलता है, इसकी आवश्यकता नहीं होती है और स्रोत कोड हुक या ट्वीक्स की आवश्यकता नहीं होती है। मेरा मानना ​​है कि एक परीक्षण संस्करण उपलब्ध है।

बस कार्यक्रम को थामने:

+0

++ मैंने अभी उस लिंक का पालन किया है, और यह आशाजनक लग रहा है। यह स्पष्ट रूप से ढेर नमूना द्वारा काम करता है और लाइन-स्तरीय संकल्प देता है। मैं यह नहीं बता सकता कि क्या यह I/O या अन्य अवरोध के दौरान नमूने की अनुमति देता है, जो अनावश्यक I/O का पता लगाने की अनुमति देगा। –

+1

मैंने अभी एलटीपीआरओफ़ की कोशिश की। मुझे क्या पसंद है कि यह लाइन-स्तरीय प्रतिशत देता है, और यह I/O (याय !!) के दौरान नमूना करता है। तब मुझे यह देखकर दुःख हुआ कि नमूना को चालू/बंद करने के लिए कोई रास्ता नहीं था, जैसे गर्म कुंजी के साथ। इस प्रकार, यदि कोई प्रोग्राम इंटरैक्टिव है, तो "नमूना अभी" कहने का कोई तरीका नहीं है, न कि जब यह उपयोगकर्ता इनपुट की प्रतीक्षा कर रहा है। –

22

मैं एक बहुत ही सरल विधि (जो मैं इतने पर Mike Dunlavey की पोस्ट पढ़ने से सीखा) सुझाव देते हैं।

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

आप 25% से 50%, समग्र निष्पादन समय तो तुम सिर्फ सुधार किया है द्वारा कि समारोह के प्रदर्शन में सुधार है। और यदि आपको पता चलता है कि इसकी भी आवश्यकता नहीं है (मुझे इस विधि का उपयोग करने वाले कम समय में ऐसे कई मामले मिल गए हैं), तो आपने निष्पादन का समय आधे में घटा दिया है।

मैं कबूल करना होगा कि पहली बार में मैं इस दृष्टिकोण की प्रभावकारिता के काफी उलझन में था, लेकिन यह कुछ हफ़्ते के लिए कोशिश कर के बाद, मैं शौकीन हूँ।

+10

++ हाँ, मुझे डर है कि मैंने खुद को उस तकनीक का विज्ञापन करने की शाही कीट बना दी है, लेकिन इसे कम करें, यह काम करता है। (कॉल स्टैक को देखना महत्वपूर्ण बात है। कभी-कभी लोग कहते हैं, "यह कुछ सिस्टम रूटीन में है - यह कितना अच्छा है?" जब समस्या कुछ स्तर ऊपर स्पष्ट होती है।) –

+0

मुझे संदेह था। लेकिन, मैं पुष्टि कर सकता हूं कि यह वास्तव में काम करता है। विशेष रूप से, यदि आपका प्रोग्राम काफी धीमा प्रदर्शन करता है। सबसे अच्छा, कोड हुक की कोई ज़रूरत नहीं है। –

3

मैं हमेशा एएमडी कोड विश्लेषक का उपयोग करता हूं, मुझे इसका उपयोग करना काफी आसान लगता है और दिलचस्प परिणाम देता है। मैंने हमेशा समय-आधारित प्रोफ़ाइल का उपयोग किया, जिसमें मैंने पाया कि यह मेरे ऐप्स की डीबग जानकारी के साथ अच्छी तरह से सहयोग करता है, जिससे मुझे यह पता चल जाता है कि प्रक्रिया में समय कहाँ बिताया जाता है, सी ++ निर्देश और एकल असेंबली निर्देश स्तर।

2

विंडोज डिबगर्स (सीडीबी/विंडबग) स्थापित करने के लिए एक बहुत ही सरल (और मुफ्त) तरीका है, ब्याज की जगह पर एक बीपी सेट करें, और wt कमांड ("ट्रेस और वॉच डेटा") जारी करें। अधिक जानकारी के लिए MSDN देखें।

+0

++ मैंने पहले हवाओं का उपयोग किया था, और Ctrl-C विधि पर निर्भर था। तो अगर मैं धीरे-धीरे दौड़ना चाहता था तो मैं एक वॉच डेटा का उपयोग करता हूं, जैसा कि आप अनुशंसा करते हैं। –

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