2010-11-29 8 views
9

मैं विजुअल स्टूडियो 2008 विकास संस्करण के प्रोफाइलर का उपयोग कर रहा हूं। "लक्षित प्रोफाइलिंग" करने के लिए, मैं मैन्युअल रूप से "अंक" के माध्यम से प्रोफाइलर फ़िल्टर सेट कर सकता हूं, जब भी मैं अपने वर्तमान चल रहे परीक्षण कोड से जुड़ा हूं। लेकिन मैं बजाय प्रोग्रामेटिक रूप से अंक डालना चाहता हूं। मैं अपने टेस्ट कोड में एक कॉल, निर्देश, या निर्देश जोड़ना चाहता हूं, जब निष्पादित किया गया है, तो प्रोफाइलर "यह एक 'चिह्न' कहलाता है जिसे 'BeginWork' कहा जाता है" और "यह एक 'चिह्न' है जिसे 'एंडवर्क्स' कहा जाता है"।प्रोग्रामेटिक रूप से प्रोफाइलिंग अंक डालने

क्या ऐसा करने का कोई तरीका है? यदि नहीं, तो विजुअल स्टूडियो 2010 में वह क्षमता है?

+0

मुझे लगता है कि यह उल्लेखनीय है कि मुझे वीएस -2008 प्रोफाइलर गैर-प्रबंधित कोड को संभालने में विस्फोटक रूप से भयानक पाया गया है। YMMV। हम स्वयं AQTime का उपयोग करते हैं, लेकिन मैं इसके साथ पूरी तरह से खुश नहीं हूं। –

उत्तर

10

प्रोग्रामरेटिक रूप से अंक डालने के लिए आप प्रोफाइलर एपीआई का उपयोग कर सकते हैं। 0Cपर DataCollection.CommentMarkProfile विधि दस्तावेज़ देखें।

आपको प्रबंधित API का उपयोग करने के लिए 'प्रोग्राम फ़ाइलें [x86] \ Microsoft Visual Studio 9.0 \ Team Tools \ Performance Tools' से Microsoft.VisualStudio.Profiler.dll का संदर्भ जोड़ने की आवश्यकता है।

आपका परीक्षण कोड की तरह कुछ दे सकता है:

MarkOperationResult result; 
result = DataCollection.CommentMarkProfile(markID1, "BeginWork"); 
// Validate result... 

SomeOperation(); 

result = DataCollection.CommentMarkProfile(markID2, "EndWork"); 
// Validate result... 
+0

कोई विचार अगर सिल्वरलाइट बराबर है? –

0

एक अन्य विकल्प PerformanceCounter का उपयोग हो सकता है - अपना खुद का एक बना सकते हैं और यह प्रोग्राम के रूप में अद्यतन करें। आप संदर्भ के रूप में Creating a PerfMon counter to record an average per call (C#) में उदाहरण का उपयोग कर सकते हैं।

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