2012-05-03 6 views
7

के लिए खोज रहे हैं मैं सी ++ कोड के लिए कम प्रभाव, ओएस-स्वतंत्र प्रोफाइलर की तलाश में हूं।कम प्रभाव सी ++ प्रोफाइलर

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

मैंने चेकपॉइंट्स के आधार पर एक घर का प्रकार का प्रोफाइलर बनाया है जो मुझे कोड के कुछ हिस्सों को मापने देता है। असल में मुझे कोड में रणनीतिक स्थानों में चेकपॉइंट सेट करने के लिए कोड (और पुन: संकलित) को संशोधित करना होगा। फिर, जब निष्पादित किया जाता है, तो यह प्रत्येक चेकपॉइंट पर कितनी बार हिट होता है और अंतिम चेकपॉइंट हिट होने के समय से स्टोर करता है। फिर, इसे चलाने के बाद, मैं चेकपॉइंट्स को डंप कर सकता हूं और प्रत्येक के लिए यह गणना करता है: num-hits, max-time, min-time, avg-time, आदि

यह प्रोफाइलर (मैंने इसे LowImpactProfiler कहा) ठीक काम करता है, लेकिन मुझे आश्चर्य है कि वहां कुछ बेहतर है या नहीं।

Ive ओप्रोफाइल माना जाता है, जो एक नमूना प्रोफाइलर है, लेकिन चूंकि मैं लिनक्स नहीं चला रहा हूं, मुझे लगता है कि यह लागू करने के लिए वास्तव में भिन्न होगा।

+1

यदि लक्ष्य यह पता लगाना है कि कोड में क्या धीमा हो रहा है और बेहतर प्रदर्शन प्राप्त करने के लिए बेहतर किया जा सकता है * [आप इसे आज़मा सकते हैं] (http://stackoverflow.com/questions/375913/what-can -आई-यूज-टू-प्रोफाइल-सी-कोड-इन-लिनक्स/378024 # 378024)। * –

+0

@ ब्रैडी: * हेइजेनबर्गर *? इस बारे में नहीं पता था! –

+0

@Matthieu: इसके बारे में कभी नहीं सुना? यह एक क्वांटम हैमबर्गर है। –

उत्तर

5

मैंने बहुत सफलतापूर्वक बहुत सीमित एम्बेडेड उपकरणों पर प्रोफ़ाइल के लिए Shiny का उपयोग किया है। आपके विवरण से, यह आपके LowImpactProfiler के लिए एक समान दृष्टिकोण लेता है।

+0

मैं इसे इस सप्ताह डाउनलोड करूँगा और एक नज़र डालें, Gracias desde मैड्रिड! – Brady

+0

Ive ने चमकदार कोड पर एक नज़र डाली और मुझे अब तक यह पसंद है, यह वर्तमान में मेरे पास एक बेहतर समाधान प्रतीत होता है। धन्यवाद! – Brady

+0

यह आशाजनक लग रहा है, फिर भी मुझे संदेह है कि यह बहुत कम पावर एम्बेडेड डिवाइस पर काम करेगा। – Alex

1

आप Windows का उपयोग कर रहे हैं, तो आप मेरी प्रोफाइलर, यहाँ वर्णित http://ravenspoint.wordpress.com/2010/06/16/timing/

ऐसा लगता है कि यह तुम्हारा की तुलना में उपयोग करने के लिए आसान हो सकता है की कोशिश कर सकते हैं, लेकिन यह ओएस स्वतंत्र नहीं है। यह QueryPerformanceCounter() पर कॉल का उपयोग करता है जो एक विंडोज एपीआई है। यह ओपन सोर्स है, इसलिए यह भी आपके ओएस पर पोर्ट करने के लिए उपयुक्त हो सकता है, जो भी उच्च प्रदर्शन टाइमर उपलब्ध है।

+0

धन्यवाद, लेकिन हम विंडोज़ का उपयोग नहीं करेंगे, इसका एक टेलीकॉम ऐप और यदि कुछ भी हो, तो इसे किसी यूनिक्स प्लेटफ़ॉर्म पर पोर्ट किया जा सकता है। मैं वैसे भी एक नज़र डालेंगे। – Brady

+0

+1, मुझे एपीआई पसंद है जो इसका उपयोग करता है, यह * बहुत * मेरे चेकपॉइंट के समान है। मैं कोड को देखूंगा और इसे मेरे साथ पोर्टिंग/विलय करने के बारे में देखूंगा। मैं तुम्हारी तैयारी करूँगा और इसे देखने के लिए अगले सप्ताह गिटूब पर रखूंगा। मैंने चेकपॉइंट्स को भी स्कॉप्ड किया है, या स्कॉप्स में होने की आवश्यकता के बिना व्यक्तिगत चेक्कपॉइंट्स सेट कर सकते हैं। जब मैं अपना कोड जमा करता हूं, तो मैं यहां एक संदेश पोस्ट करूंगा और/या आपको अपनी वेबसाइट पर एक संदेश भेजूंगा। धन्यवाद! – Brady

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