2011-01-05 4 views
12

के लिए प्रदर्शन परीक्षण उपयोगिताओं मैं उत्सुक था कि किसी के पास प्रदर्शन परीक्षण पुस्तकालयों और अग्रभागों के लिए कोई सुझाव है कि सी ++ के लिए अच्छे ग्राफिकल चार्ट का उत्पादन होगा (जैसे gcov कवरेज डेटा कैसे उत्पन्न करता है और कोड कवरेज डेटा देखने के लिए वहां पर अग्रसर होते हैं) । जैसे चार्ट उत्पादन करने में सक्षम होने के नाते:सी ++

http://download.eclipse.org/eclipse/downloads/drops/S-3.7M4-201012081300/performance/performance.php?fp_type=0

बहुत चालाक हो जाएगा। हम अभी यूनिट परीक्षण के लिए cppunit का उपयोग करते हैं, इसलिए शायद कुछ ऐसा है जो उसके साथ एकीकृत हो।

कुछ और जानकारी: हम इंटेल x86-64 मशीनों पर लिनक्स (हम उबंटू ल्यूसिड/मावेरिक का उपयोग करते हैं) पर संकलित कर रहे हैं।

+0

http://stackoverflow.com/questions/4394606/beyond-stack-sampling-c-profilers, ऐसी चीजों की एक दिलचस्प चल रही सूची है ... – Nim

+0

यह मुख्य रूप से उस ओएस और सीपीयू पर निर्भर करेगा जो आप चल रहे हैं क्या उपलब्ध है ... क्या आप स्वचालित परीक्षण या प्रदर्शन प्रोफाइलिंग के लिए और अधिक देख रहे हैं? – AJG85

+0

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

उत्तर

4

कुछ सुझाव:

  • googletest सी ++ ढांचे JUnit संगत रिपोर्ट उत्पादन में सक्षम है।
  • Hudson आपके परीक्षण चलाने के लिए उपयोग किया जा सकता है। यह केवल तभी आवश्यक है कि आपका सी ++ एप्लिकेशन कंसोल एप्लिकेशन के रूप में चलाया जा सके।
  • Hudson Performance Plugin जुनीट रिपोर्ट से आलेखीय चार्ट उत्पन्न कर सकता है।
  • कई अन्य plugins हैं।
2

लिनक्स पर आप valgrind टूलकिट आज़मा सकते हैं। वालग्रिंड में कॉलग्रिंड टूल शामिल है जो आपके कोड को प्रोफाइल कर सकता है। KCacheGrind बहुत अच्छी तरह से कैश्रिंड के आउटपुट को विज़ुअलाइज़ करता है।

+1

विचार कोड को प्रोफ़ाइल नहीं करना है, प्रति रात, यह एक रात्रि निर्माण प्रणाली बनाने के लिए है जो हमें कुछ perf पर कुछ सरल मीट्रिक (शायद यहां तक ​​कि केवल रनटाइम) ले कर प्रदर्शन प्रतिगमन के बारे में सूचित कर सकता है। यूनिट परीक्षण जो हमारे पास होगा। इसलिए हम विशेष रूप से हमारे कोड का उपयोग नहीं करना चाहते हैं, हम बस इसके कच्चे प्रदर्शन को देखना चाहते हैं। –

+0

@ केनी: आप जिस प्रकार के ग्राफ चाहते हैं उसका उत्पादन करने के लिए आप 'cg_diff' के आउटपुट को पार्स कर सकते हैं। –

2

कुछ जवाब में बात की इस तरह की मेरे अनुभव here और here से उम्मीद है कि प्रासंगिक नोट्स।

आपके मौजूदा CppUnit सेटअप को scoped_timer (उपरोक्त में से दूसरा देखें) के साथ संयुक्त करने के लिए कोई कारण नहीं है और कुछ चार्टों के लिए पोस्टप्रोकैसिंग का कुछ कारण शायद आपकी आवश्यकताओं को पूरा नहीं करना चाहिए। जबकि मेरा मानना ​​है कि सीपीपीयूनीट में एक प्लगइन ("क्लॉकर"?) शामिल है जो अनजान समय से लॉग आउट करेगा, मुझे नहीं लगता कि यह वास्तव में अभ्यास में इस तरह के प्रदर्शन परीक्षण के लिए उपयोगी है क्योंकि आप हमेशा परीक्षण के लिए केवल प्रत्येक परीक्षा का हिस्सा चाहते हैं और सभी सेटअप कोड नहीं।

1

दो प्रदर्शन परीक्षण ढांचे आपकी मदद कर सकते हैं।

उन दोनों गूगल टेस्ट ढांचे से प्रेरित है और निष्पादन परीक्षण का समर्थन करने के इंटरफेस प्रदान कर रहे हैं, तो यह अपने मूल googletest परिवहन के लिए आसान है Hayai या SkyPat पर।

SkyPat इकाई परीक्षण और perf_evnet को जोड़ती है। यह Google टेस्ट की अवधारणा को बढ़ाता है और पीएमयू तक पहुंचने के लिए एक इंटरफेस प्रदान करता है। perf_event SkyPat सटीक चक्र गणना देता है जो उन उपकरणों के लिए उपयोगी होते हैं जो समय के भिन्नता के प्रति संवेदनशील होते हैं, जैसे कंपाइलर्स। SkyPat पीएमयू घटनाओं (ईक: चक्र, निर्देश, कैश संदर्भ, कैश मिस इत्यादि) द्वारा कोड का एक टुकड़ा भी प्रोफाइल कर सकता है।इसके प्रदर्शन को परीक्षण ढांचे में (mach_absolute_time():) gethrtime(), एप्पल (OSX, IOS: QueryPerformanceCounter(), लिनक्स विंडोज)

Hayai कई प्रदर्शन को मापने अलग ओएस के तरीकों का समर्थन करता है।

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

  • कोई संबंधित समस्या नहीं^_^