2009-09-11 13 views
18

रिकॉर्ड करने के लिए एक पेर्फमॉन काउंटर बनाना, मैं सी # में किसी विधि के औसत निष्पादन समय को रिकॉर्ड करने के लिए पेर्फमॉन काउंटर का उपयोग कैसे कर सकता हूं?औसत प्रति कॉल (सी #)

अभी तक मुझे केवल PerfMon काउंटर को बढ़ाने या घटाने के लिए नमूना कोड मिला है।

उत्तर

35

यहां कुछ नमूना कोड है जिसे मैंने एक बार ऐसा करने के लिए लिखा था।

सबसे पहले, आपको प्रश्न में प्रदर्शन काउंटर निर्दिष्ट और स्थापित करने की आवश्यकता है। आप एक इंस्टालर का उपयोग करके ऐसा कर सकते हैं:

public class CreditPerformanceMonitorInstaller : Installer 
{ 
    private PerformanceCounterInstaller counterInstaller_; 

    public CreditPerformanceMonitorInstaller() 
    { 
     this.counterInstaller_ = new PerformanceCounterInstaller(); 
     this.counterInstaller_.CategoryName = CreditPerformanceCounter.CategoryName; 
     this.counterInstaller_.CategoryType = PerformanceCounterCategoryType.SingleInstance; 

     CounterCreationData transferAverageData = new CounterCreationData(); 
     transferAverageData.CounterName = CreditPerformanceCounter.AverageTransferTimeCounterName; 
     transferAverageData.CounterHelp = "Reports the average execution time of transfer operations"; 
     transferAverageData.CounterType = PerformanceCounterType.AverageTimer32; 
     this.counterInstaller_.Counters.Add(transferAverageData); 

     CounterCreationData transferAverageBaseData = new CounterCreationData(); 
     transferAverageBaseData.CounterName = CreditPerformanceCounter.AverageTransferTimeBaseCounterName; 
     transferAverageBaseData.CounterHelp = "Base for average transfer time counter"; 
     transferAverageBaseData.CounterType = PerformanceCounterType.AverageBase; 
     this.counterInstaller_.Counters.Add(transferAverageBaseData); 

     this.Installers.Add(this.counterInstaller_); 
    } 

    public Installer PerformanceCounterInstaller 
    { 
     get { return this.counterInstaller_; } 
    } 
} 

प्रदर्शन काउंटर करने के लिए लिखने के लिए, आप इसे इस प्रकार कर सकते हैं:

public void RecordTransfer(long elapsedTicks) 
{ 
    using (PerformanceCounter averageTransferTimeCounter = new PerformanceCounter(), 
     averageTransferTimeBaseCounter = new PerformanceCounter()) 
    { 
     averageTransferTimeCounter.CategoryName = CreditPerformanceCounter.CategoryName; 
     averageTransferTimeCounter.CounterName = CreditPerformanceCounter.AverageTransferTimeCounterName; 
     averageTransferTimeCounter.ReadOnly = false; 

     averageTransferTimeBaseCounter.CategoryName = CreditPerformanceCounter.CategoryName; 
     averageTransferTimeBaseCounter.CounterName = CreditPerformanceCounter.AverageTransferTimeBaseCounterName; 
     averageTransferTimeBaseCounter.ReadOnly = false; 

     averageTransferTimeCounter.IncrementBy(elapsedTicks); 
     averageTransferTimeBaseCounter.Increment(); 
    } 
} 
4

विभिन्न PerformanceCounterTypes पर एक नज़र डालें। औसत समय या गणना की गणना के लिए कई प्रकार हैं। आपको कुछ उदाहरण भी मिलेंगे।

उम्मीद है कि इससे मदद मिलती है।

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