2012-10-24 11 views
5

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

using (mvcminiprofiler.Step("OperationName", 1200) 
{ 
    //some C# code 
} 

यह तर्क '1200' का प्रतीक है इस आपरेशन 1200 एमएस लगने की उम्मीद है और डेटाबेस के लिए यह परिणाम नहीं सहेजते यह से कम कुछ भी लेता है, तो यह है कि या 1200 एमएस के बराबर। लेकिन अगर इसमें 1200 एमएस से अधिक समय लगता है तो इस प्रतिक्रिया समय को डेटा बेस पर सहेजें। इसलिए मैं मूल रूप से प्रति ऑपरेशन थ्रेसहोल्ड मानों के बारे में बात कर रहा हूं।

मैं इसके लिए मिनीप्रोफाइलर के चारों ओर एक रैपर लिखने को तैयार हूं लेकिन मैं मिनी प्रोफाइलर स्रोत कोड को बदलने के लिए तैयार नहीं हूं। दरअसल हमने पहले ही मिनी प्रोफाइलर के चारों ओर थोड़ा ढांचा बनाया है लेकिन हम इसका सोर्स कोड बदलना नहीं चाहते हैं। लेकिन कुछ तरीकों से इसकी कार्यक्षमता का विस्तार करें।

+0

यह मुश्किल है, आपको इस जानकारी को आईएसटीओरेज में किसी तरह से बहने की आवश्यकता होगी, जारोड को –

+0

देखने के लिए कहेंगे :) कृपया यह समझ में आता है क्योंकि कुछ ऑपरेशन जिन्हें हम प्रोफाइल करना चाहते हैं और साइट को प्रभावित नहीं कर रहे हैं वास्तविक समय में कुछ बड़ी मात्रा हो सकती है। इसलिए वैश्विक सीमाओं के अलावा ऑपरेशन स्तर सीमा सीमा होने का अर्थ है। धन्यवाद! –

+0

'.Step()' पर ओवरराइड करने के बजाय, '.StepIf (" ऑपरेशन ", 1200) 'के बारे में क्या? –

उत्तर

2

मैं सिर्फ nuget 3.0.10-beta5 में MiniProfiler को नया विस्तार के तरीकों, उपलब्ध निम्नलिखित जोड़ा गया है और उच्च:

  1. MiniProfiler.StepIf(string name decimal minSaveMs, bool includeChildren = false)
  2. MiniProfiler.CustomTimingIf(string category, string commandString, deciml minSaveMs, string executeType = null)

आप बिल्कुल करने के लिए इन का उपयोग करने में सक्षम होना चाहिए आप क्या करना चाहते हैं आपके मामले में, आप इस तरह कोड का प्रयोग करेंगे:

using (MiniProfiler.Current.StepIf("Operation Name", 1200)) { 
    // do your stuff 
} 

आप (गलत पर चूक) includeChildren का उपयोग करते हैं या नहीं, इस CustomTiming को बचाने के लिए निर्धारित करने के लिए सेट करने के लिए किया जाए या नहीं समय बच्चे प्रोफाइल में दर्ज की गई उपयोग करने के लिए कर सकते हैं ।

this GitHub Issue में अधिक जानकारी।

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