2012-07-01 2 views
1

Как определить и использовать два счетчика производительности AverageTimer32 в одном приложении (.exe)?2 Счетчик производительности AverageTimer32

Дополнительные примечания: Я пытаюсь так измерить потраченное время на разные части операции.

У меня есть счетчик производительности AverageTimer32 и средний байт. Оно работает.

Теперь я хочу добавить второй счетчик производительности AverageTimer32. Он не работает, даже если я добавляю еще один счетчик MiddleBase. Думаю, я что-то ошибаюсь. Образец кода действительно оценен.

Это различные части кода:

_AverageDuration = new PerformanceCounter(); 
_AverageDuration.CategoryName = CategoryName; 
_AverageDuration.CounterName = "average time per operation"; 
_AverageDuration.MachineName = "."; 
_AverageDuration.ReadOnly = false; 

_AverageDurationBase = new PerformanceCounter(); 
_AverageDurationBase.CategoryName = CategoryName; 
_AverageDurationBase.CounterName = "average time per operation base"; 
_AverageDurationBase.MachineName = "."; 
_AverageDurationBase.ReadOnly = false; 
... 
CounterCreationDataCollection counters = new CounterCreationDataCollection(); 
... 
CounterCreationData avgDuration = new CounterCreationData(); 
avgDuration.CounterName = "average time per operation"; 
avgDuration.CounterHelp = "Average duration per operation execution"; 
avgDuration.CounterType = PerformanceCounterType.AverageTimer32; 
counters.Add(avgDuration); 

CounterCreationData avgDurationBase = new CounterCreationData(); 
avgDurationBase.CounterName = "average time per operation base"; 
avgDurationBase.CounterHelp = "Average duration per operation execution base"; 
avgDurationBase.CounterType = PerformanceCounterType.AverageBase; 
counters.Add(avgDurationBase); 
... 
PerformanceCounterCategory.Create(CategoryName, "Category for Receiver", PerformanceCounterCategoryType.Unknown, counters); 
... 
AverageDuration.IncrementBy(performanceCounterwatch.ElapsedTicks); 
AverageDurationBase.Increment(); 
+0

Кстати, вы можете рассмотреть что-то вроде [Использование XSLT для создания кода счетчиков производительности] (http://rusanu.com/2009/04/11/using-xslt-to-generate-performance-counters-code/) до избегать повторения всего кода –

ответ

3

Порядок их добавления имеет решающее значение. Вы должны добавить Среднее значение, затем его соответствующую базу, затем вторую среднюю, а затем вторую соответствующую базу.

+0

Также мне (думаю) пришлось удалить категорию и добавить ее снова с новыми счетчиками производительности. –

Смежные вопросы