विंडोज के लिए सबसे अच्छा मुफ्त C ++ प्रोफाइलर क्या है? [बन्द है]


224

मैं अपने सी ++ कोड में अड़चन खोजने के लिए एक प्रोफाइलर की तलाश कर रहा हूं। मैं एक नि: शुल्क, गैर-घुसपैठ और अच्छा प्रोफाइलिंग टूल ढूंढना चाहता हूं। मैं एक गेम डेवलपर हूं, और मैं Xbox 360 के लिए PIX का उपयोग करता हूं और यह बहुत अच्छा है, लेकिन यह मुफ़्त नहीं है। मैं इंटेल VTune जानता हूं , लेकिन यह मुफ्त भी नहीं है।


VTune अब मुक्त प्रतीत होता है: software.intel.com/en-us/vtune । मैंने सामुदायिक संस्करण डाउनलोड किया है और यह C ++ और साथ ही C # कोड को प्रबंधित करने पर भी बहुत अच्छा काम करता है
डॉ। ABT

1
यह ऑफ टॉपिक कैसा है? जहाँ तक मुझे पता है, विकास उपकरण विषय पर हैं। हालांकि यह राय आधारित है।
निक स्ज़र्मन

जवाबों:


135

कोडएक्सएल ने अब लाइन ऑफ एंड ऑफ एएमडी कोड एनालिस्ट का समर्थन किया है और दोनों स्वतंत्र हैं, लेकिन वीट्यून के रूप में उन्नत नहीं हैं। स्लीपी भी है , जो बहुत सरल है, लेकिन कई मामलों में काम करता है।


4
: यहाँ के लिए CodeAnalyst कड़ी है developer.amd.com/CPU/CODEANALYST/Pages/default.aspx
epotter

1
मैंने अब इसके साथ काम करने की कोशिश की, और इसे बिल्कुल पसंद नहीं किया। मैं यह भी नहीं समझ पा रहा था कि फंक्शन का कुल समय% (बछड़ों सहित) कैसे प्राप्त करें जो ट्रूटाइम 10 साल पहले ठीक कर सकता था।
पावेल रेड्ज़विलोव्स्की

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

मैं xperf की कोशिश करने की सलाह दूंगा मैंने इसे AMD कोड एनालिस्ट से बेहतर पाया।
MW_dev

1
CodeAnalyst को क्रिटिकल बग फिक्स के अलावा और कोई अपडेट प्राप्त नहीं होगा। वे कोडएक्सएल पर चले गए। यहां लिंक दिया गया है ताकि आप अपना उत्तर अपडेट कर सकें। और मुझे CodeAnalyst / XL के बारे में बताने के लिए धन्यवाद, वैसे।
आद्री सीएस

61

बहुत नींद एक विंडोज सिस्टम (मुक्त) के लिए सी / सी ++ सीपीयू प्रोफाइलर है।
CppCheck विंडोज सिस्टम (फ्री) के लिए एक स्थिर C / C ++ CPU प्रोफाइलर है।


20
googletest एक यूनिट टेस्टिंग फ्रेमवर्क है। प्रोफाइलिंग करने के लिए आप इसका उपयोग कैसे करेंगे?
महानवमी

यदि आप gcc स्टैक से Windows बाइनरी का उपयोग कर रहे हैं, तो यह एक बढ़िया विकल्प है - AMD CodeAnalyst विंडोज पर gcc प्रतीकों को नहीं पहचानता है, लेकिन बहुत नींद आता है!
माइक


17

एमएस वीसी 7.1 के लिए एक इंस्ट्रूमेंटिंग (फंक्शन-सटीक) प्रोफाइलर है और इसे माइक्रोप्रोफाइलर कहा जाता है। आप इसे (x64) या यहाँ (x86) प्राप्त कर सकते हैं । इसमें आपके कोड के लिए किसी भी संशोधन या परिवर्धन की आवश्यकता नहीं होती है और यह वास्तविक समय में कॉल करने वालों और शांत लोगों के साथ फ़ंक्शन आँकड़े प्रदर्शित करने में सक्षम होता है एप्लिकेशन को बंद करने / प्रोफाइलिंग प्रक्रिया को रोकने की आवश्यकता के बिना है।

यह VisualStudio के साथ एकीकृत है, इसलिए आप आसानी से किसी प्रोजेक्ट के लिए प्रोफाइलिंग को सक्षम / अक्षम कर सकते हैं। स्वच्छ मशीन पर इसे स्थापित करना भी संभव है, इसे केवल निष्पादन योग्य प्रोफाइल के साथ-साथ प्रतीक सूचना स्थित होना चाहिए।

यह उपकरण तब उपयोगी होता है जब बहुत अधिक नींद की तरह नमूना प्रोफाइलरों से सांख्यिकीय सन्निकटन पर्याप्त नहीं होता है।

किसी न किसी तुलना से पता चलता है, कि यह AQTime (जब इसे इंस्ट्रूमेंटिंग, फंक्शन-लेवल रन में लगाया जाता है) को हराता है। निम्नलिखित प्रोग्राम (पूर्ण अनुकूलन, इनलाइनिंग अक्षम) माइक्रो-प्रोफाइलर के साथ तीन गुना तेजी से चलता है, वास्तविक समय में परिणाम प्रदर्शित करता है, जबकि AQTime केवल आंकड़े एकत्र कर रहा है:

void f()
{
    srand(time(0));

    vector<double> v(300000);

    generate_n(v.begin(), v.size(), &random);
    sort(v.begin(), v.end());
    sort(v.rbegin(), v.rend());
    sort(v.begin(), v.end());
    sort(v.rbegin(), v.rend());
}

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

1
मैंने पाया कि नियमित CLOSE बटन द्वारा अपने ऐप को बंद करने के बाद, प्रोफाइलर विंडो को नियमित रूप से बंद किया जा सकता है। लेकिन जब मैं SHIFT + F5 शॉर्टकट (स्टॉप डीबगिंग वीएस कमांड) द्वारा ऐप से बाहर निकलता हूं, तो प्रोफाइलर विंडो क्लोज बटन अक्षम हो जाता है।
लुडेक वोदिका

VS 2015 के साथ काम नहीं करता है
rustyx

1
1.1.590 तक निर्धारित है। विज़ुअल स्टूडियो गैलरी पृष्ठ ( visualstudiogallery.msdn.microsoft.com/… ) पर अपडेट देखें
Arty

1
यह वास्तव में बहुत अच्छा है! उच्चतर तरीके से रैंक किया जाना चाहिए! सुपर स्थापित करने और चलाने के लिए सरल है, और आपको सबसे अधिक वह देता है जो आपको जानना चाहिए। मेरी दूसरी पसंद विंडोज प्रदर्शन विश्लेषक है: geekswithblogs.net/akraus1/archive/2015/04/21/163342.aspx
स्टीव

10

Microsoft के पास Windows प्रदर्शन टूलकिट है

इसके लिए विंडोज विस्टा, विंडोज सर्वर 2008 या विंडोज 7 की आवश्यकता होती है ।


6
यह कैसे मुक्त नहीं है? यह विंडोज एसडीके का एक हिस्सा है। मैं इसे बिना किसी समस्या के डाउनलोड करने में सक्षम था। (निश्चित रूप से, हमारे पास एक MSDN सदस्यता है, इसलिए कुछ लोगों को मेरे द्वारा किए गए अनुभव से अलग अनुभव हो सकता है।)
एपोट्टर

1
नि: शुल्क या नहीं, लिंक अब ठीक से काम नहीं करता है।
टॉम ज़ातो -


5

मैं अत्यधिक Windows प्रदर्शन टूलकिट (WPT) या XPERF की सलाह देता हूं

कमांड लाइन xperf कमांड लाइन टूल रिकॉर्ड ईवेंट ट्रेसिंग फॉर विंडोज (ETW) लॉग्स का विश्लेषण किया जा सकता है जो GUI xperfview टूल का उपयोग करके विश्लेषण किया जा सकता है।

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

पर विंडोज 8 विंडोज प्रदर्शन विश्लेषक एक और भी उच्च स्तर पर xperf लेता है।

ETW लॉग में दिए गए हार्ड नंबर और आंकड़े विज़ुअल स्टूडियो प्रोफाइलर (2010/2012) को छोड़कर विस्तार से अद्वितीय हैं, जो बहुत अच्छा है लेकिन AFAIK से मुक्त नहीं है।

यदि आपने कभी xperf का उपयोग नहीं किया है ... तो आप नहीं जानते कि आप क्या याद कर रहे हैं


1
वैसे मुझे पता है कि मैं साइट पर काम करने वाले URL को याद कर रहा हूं।
टॉम ज़ातो - मोनिका

3

मैं AQTime का उपयोग करता हूं, यह मेरे द्वारा उपयोग किए जाने वाले सर्वश्रेष्ठ प्रोफाइलिंग टूल में से एक है। यह मुफ़्त नहीं है, लेकिन आप 30 दिनों का परीक्षण प्राप्त कर सकते हैं, इसलिए यदि आप केवल एक परियोजना के अनुकूलन और रूपरेखा पर योजना बनाते हैं और 30 दिन आपके लिए पर्याप्त हैं तो मैं इस एप्लिकेशन का उपयोग करने की सलाह दूंगा। ( http://www.automatedqa.com/downloads/aqtime/index.asp )


केवल इस टूल ने मुझे IIS पर रिलीज़ मोड मिश्रित (प्रबंधित और मूल) वेब अनुप्रयोग में संकलित प्रोफ़ाइल में मदद की।
मोनसाइनर

यह दुर्भाग्यपूर्ण है कि वे उन लोगों का समर्थन नहीं करते हैं जो अपने उत्पाद का मूल्यांकन करने की कोशिश करते हैं।
लकी ल्यूक

वर्तमान में वे सीमित कार्यक्षमता के साथ 14 दिनों के परीक्षण की पेशकश कर रहे हैं।
मैक्स

2

कृपया मेरे प्रोफाइलर का प्रयास करें, जिसे cRunWatch कहा जाता है। यह सिर्फ दो फाइलें हैं, इसलिए अपनी परियोजनाओं के साथ एकीकृत करना आसान है, और कोड का एक टुकड़ा लिखवाने के लिए एक पंक्ति को जोड़ने की आवश्यकता है।

http://ravenspoint.wordpress.com/2010/06/16/timing/

बूस्ट लाइब्रेरी की आवश्यकता है।



0

मैंने सालों से कम्पूवेयर के डेपार्टनर सुइट के "ट्रूटाइम - पार्ट का उपयोग किया है। एक [फ्री वर्जन] है (आप कंपूवेयर देवपार्टनर परफॉर्मेंस एनालिसिस कम्युनिटी एडिशन की कोशिश कर सकते हैं।) उपलब्ध है।


0

मैं VSPerfMon का उपयोग करता हूं जो स्टैंडअलोन विजुअल स्टूडियो प्रोफाइलर है। मैंने इसे चलाने और परिणामों को देखने में मदद करने के लिए एक GUI उपकरण लिखा।

http://code.google.com/p/vsptree/


0

आप एंबेडेडप्रोफाइलर का उपयोग कर सकते हैं, यह लिनक्स और विंडवोस दोनों के लिए मुफ्त है।

प्रोफाइलर घुसपैठ (कार्यक्षमता द्वारा) है, लेकिन इसे किसी भी कोड संशोधन की आवश्यकता नहीं है। बस एक विशिष्ट संकलक ध्वज जोड़ें (MSVC के लिए gcc / MinGW या / GH के लिए -finstrument-configios) और प्रोफाइलर के पुस्तकालय को लिंक करें। यह आपको एक पूर्ण कॉल ट्री या सिर्फ एक फ़ंक्स्टन सूची प्रदान कर सकता है। इसका अपना विश्लेषक GUI है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.