2011-08-16 13 views
6

मिनी प्रोफाइलर का उपयोग करते समय, क्या इसका मतलब है कि ब्लॉक कोड का उपयोग करके उत्पादन कोड 'littered' होगा?मिनी-प्रोफाइलर

using (profiler.Step("Set page title")) 
{ 
    ViewBag.Title = "Home Page"; 
} 

मुझे लगता है कि अगर यह 1-ऑफ परीक्षण मैं इसे हटा सकता है, लेकिन आम तौर पर आप लगातार रूपरेखा के लिए codebase में इन रखना चाहते हैं।

उत्तर

9

यह वास्तव में एक बुरा उदाहरण है - आप सामान्य रूप से कुछ मामूली प्रोफाइल नहीं करेंगे।

आखिरकार, यह वैकल्पिक है कि आप प्रोफाइल करना चाहते हैं। ADO.NET जैसी चीजों के लिए एक हुक है, लेकिन यदि आप इसे से बाहर प्रोफाइल करना चाहते हैं, तो हाँ: आपको इसे एक हाथ देने की आवश्यकता है।

पुन "लेटर्ड", ठीक है, यह व्यक्तिपरक है। और सबसे अच्छा तरीका आमतौर पर उपकरण को पर बहुत उच्च स्तर संचालन को सीमित करने के लिए होता है, और फिर केवल अधिक बारीक परिचालनों के साथ ज़ूम इन करें क्योंकि आपको लगता है कि आपको (पहचान की गई समस्या स्पॉट के कारण) की आवश्यकता है; उदाहरण के लिए, आप हो सकता है:

... 
using(profiler.Step("Refresh customer")) 
{ 
    // ... 
} 
... 

और उसके बाद ही जब आप पाते हैं 1800ms लेने ज़ूम कि में:

... 
using(profiler.Step("Refresh customer")) 
{ 
    using(profiler.Step("Query LDAP")) 
    { ... } 
    using(profiler.Step("Query primary customer DB")) 
    { ... } 
    using(profiler.Step("Query aux db")) 
    { ... } 
    using(profiler.Step("Print, scan, and OCR")) 
    { ... } 
} 
... 

भी व्यक्ति आदेश के लिए एक .Inline(...) विधि नहीं है।

या नहीं, आपको लगता है यह "कचरा":

  • यह जोर देती है performance is a feature (और वास्तव में, अक्सर एक आवश्यकता) - यह ठीक आपके सुविधाओं का समर्थन करने के लिए कोड के लिए है! वास्तव में, यह सबूत आपके पास कि माना (और मापा) कोड का एक नया/बदल टुकड़ा के प्रदर्शन का एक रूप है
  • यह पूरी तरह से प्रासंगिक कैसे बारीक आप इसे
  • यह इसलिए विस्तार के लिए एक सार्थक स्तर प्रदान करता है बनाते हैं उपयोगकर्ता के लिए - लॉग में ट्रिविया की पागल मात्रा के बिना, और अधिकांश लॉगिंग की प्रदर्शन-आक्रामक प्रकृति के बिना
+0

बहुत धन्यवाद, बीटीडब्ल्यू, आपने परिणामों को आउटपुट करने वाले प्रत्येक पृष्ठ पर उस ड्रॉपडाउन को कैसे बनाया? किसी भी तरह प्रोफाइलर में हुक किया? यानी प्रत्येक लॉग को request.items कैश में सेव करें? – codecompleting

+0

@codecompleting वहाँ अल्पकालिक और दीर्घकालिक भंडारण दोनों प्रदान करने के लिए एक प्लग करने योग्य एपीआई है। यह डिफ़ॉल्ट रूप से एक इन-मेमोरी एएसपी.NET स्टोर का उपयोग करता है, आईआईआरसी - लेकिन आंतरिक रूप से हम लंबे समय तक SQL-Server का उपयोग करते हैं (इसके लिए प्लगइन लिखना आसान है)। क्या वह सवाल था? –

+0

मैं कुछ ऐसा करना चाहता हूं: http://community.mediabrowser.tv/uploads/site_1/2314/profiler.png उत्सुक है कि आप किसी दिए गए अनुरोध के लिए सभी प्रश्नों को कैसे एकत्र करते हैं। request.items का उपयोग कर? – codecompleting

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