Не существует тривиального способа запустить его в .NET.Тем не менее, самый простой способ, который я нашел, это построить поверх Enterprise Library, которая предоставляет некоторые готовые возможности для работы со счетчиками производительности.Например: обработчик счетчика производительности
Библиотека Enterprise также предоставляет некоторые возможности для более простого управления установкой счетчиков производительности.
Кроме того, она позволяет создаватьКроме того, вы можете создать AvergeTimeMeter, который позволяет вам просто сделать это:
private static EnterpriseLibraryPerformanceCounter averageRequestTimeCounter = PerformanceCounterManager.GetEnterpriseLibraryCounter(MadPerformanceCountersListener.AverageRequestTime);
private static EnterpriseLibraryPerformanceCounter averageRequestTimeCounterBase = PerformanceCounterManager.GetEnterpriseLibraryCounter(MadPerformanceCountersListener.AverageRequestTimeBase);
public void DoSomethingWeWantToMonitor()
{
using (new AverageTimeMeter(averageRequestTimeCounter, averageRequestTimeCounterBase))
{
// code here that you want to perf mon
}
}
Это позволяет вам просто инкапсулировать код, который вы хотите отслеживать, в блоке using - и сосредоточиться на кодеВы действительно хотите работать, а не беспокоиться обо всей инфраструктуре счетчика производительности.
Для этого вы создадите повторно используемый класс AverageTimeMeter, например:
public sealed class AverageTimeMeter : IDisposable
{
private EnterpriseLibraryPerformanceCounter averageCounter;
private EnterpriseLibraryPerformanceCounter baseCounter;
private Stopwatch stopWatch;
private string instanceName;
public AverageTimeMeter(EnterpriseLibraryPerformanceCounter averageCounter, EnterpriseLibraryPerformanceCounter baseCounter, string instanceName = null)
{
this.stopWatch = new Stopwatch();
this.averageCounter = averageCounter;
this.baseCounter = baseCounter;
this.instanceName = instanceName;
this.stopWatch.Start();
}
public void Dispose()
{
this.stopWatch.Stop();
if (this.baseCounter != null)
{
this.baseCounter.Increment();
}
if (this.averageCounter != null)
{
if (string.IsNullOrEmpty(this.instanceName))
{
this.averageCounter.IncrementBy(this.stopWatch.ElapsedTicks);
}
else
{
this.averageCounter.SetValueFor(this.instanceName, this.averageCounter.Value + this.stopWatch.ElapsedTicks);
}
}
}
}
Вы должны зарегистрировать свои счетчики производительности (показанные в примерах EntLib), но это должно получитьВы начали.