Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > PefomanceCounter. Понятие счетчика


Автор: KasMP 12.11.2010, 04:54
Здравствуйте, мои любимые винградовцы smile !

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

Речь о http://msdn.microsoft.com/ru-ru/library/3t90y2y1(v=VS.90).aspx. После всего прочитанного, услышанного и опробованного пришла мысль, что работа счетчиков может быть организована двумя способами. Не могу определить, который из них верен.
1) Создали категорию, создали счетчик. Что-то делаем в программе (выделяем память туда-сюда, считаем арифметику, перекачиваем байты из массива в массив, ...), счетчик сам следит за изменениями (ну он же знает, какого типа и что ему считать, он вполне самостоятелен) и сам меняет свое значение. Мы можем в любой момент прочитать его текущее значение. Если прочитать, поделать что-то влияющее на его значение и снова прочитать, то значения будут разные.
(образно походит на то, как бежит вода из крана: кран закрыт - значение счетчика стоит; кран открыт - значение счетчика само изменяется в зависимости от интенсивности и т.п.)
2) Создали категорию, создали счетчик. Счетчик знает только то, по какой формуле ему нужно считать; он не умеет сам определять количество обработанных элементов, выполненных операций и т.п.. Мы сами определяем, сколько операций в какой момент выполнено, что считать операцией, что считать обработанным элементом и т.п.. Сделали что-то - изменили значение счетчика руками на то значение, которое считаем нужным (Increment(), IncrementBy(), прямое присваивание RawValue и т.п.). Потом вызвали CounterSampleCalculator и он, основываясь на предоставленных нами данных и типе счетчика (точнее, соответствующей типу формуле) посчитал все.

Больше склоняюсь ко второму варианту, потому что, во-первых, ни один счетчик у меня пока не изменился сам, а, во-вторых, в примерах MSDN значения меняют именно руками, а не пытаются снимать какие-то реальные показания.
Возможно, что не верно ни одно понимание.
Расскажите, пожалуйста! Очень хочется знать этот простой ответ!

Автор: KasMP 12.11.2010, 06:30
Добавлю еще, что особенно интересны счетчики, связанные с измерением времени, за которое выполняются какие-то методы, операции и т.п..
Если кому есть что сказать по этой теме, то милости прошу smile . Пока вижу только ElapsedTime.

Автор: neutrino 12.11.2010, 21:38
Извините за глупый вопрос, но что вы хотите сделать? Что не получается?

Автор: KasMP 13.11.2010, 04:20
neutrino,

Я не понимаю, как меняются значения счетчиков. Ты их сам меняешь или они сами считаются в процессе работы?
Просто раньше я создавала категорию, создавала относящийся к ней PerfomanceCounter и периодически проверяла его значение после разных операций... Оно никогда не менялось...
Соответственно, если оно не меняется само, то, видимо, программист должен менять его сам вручную... Точнее, так: при описании многих типов счетчиков используются выражения вроде "обработанные элементы" и "завершенные операции", которые потом используются в разных вариациях и комбинациях в расчетных формулах; в начале я думала, что операции автоматически считаются в каких-то внутренних единицах (например, просто элементарные операции... выполнили в программе одно сравнение - счетчик увеличился на единицу сам); потом, когда у меня ни один счетчик не увеличивался сам, я стала думать, что программист сам определяет, что считать обработанным элементом и выполненной операцией и что он сам изменяет эти базовые значения.

Теперь вы меня понимаете..?

Автор: KasMP 17.11.2010, 08:40
Товарищи, наверно, я какой-то глупый вопрос задаю smile ..?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)