Измерять количество событий? - PullRequest
3 голосов
/ 17 июня 2009

Я занимаюсь настройкой в ​​очень большом приложении. Есть ли способ измерить количество событий, запущенных в приложении? Например, использовать что-то в System.Diagnostics?

Добавление кода внутри событий НЕ является приемлемым решением из-за размера приложения.

Существуют инструменты профилирования, но быстрый и простой подход для меня был бы найден в .Net

Ответы [ 4 ]

1 голос
/ 22 июня 2009

Я не уверен, что знание количества событий поможет вам в любом случае. Было бы более полезно узнать, где ваша программа тратит свое время или выделяет память. Профилировщик поможет с этим.


Для записи, список профилировщиков:

0 голосов
/ 23 июня 2009

Я пришел к выводу, чтобы попробовать вместо этого инструменты измерения производительности. Поскольку нет простого способа сделать код измерения мудрым. Я постараюсь узнать, что это может сделать для меня.

0 голосов
/ 22 июня 2009

Вы говорите о «средстве просмотра событий» Windows или о подписках на события в ваших классах?

Если это последнее, кто подписывается на ваши события? Может быть, вы можете написать какой-нибудь «клеевой» код, который подсчитывает сайты между событиями и подписчиками!

0 голосов
/ 18 июня 2009

Это очень интересный вопрос.

Нет действительно простого способа отследить события без какого-либо дополнительного кода. Это не означает, что добавление кода должно быть сложным или привести к снижению производительности.

Если во всех ваших событиях используются пользовательские eventArgs, вы можете добавить в конструктор простую инструкцию регистрации, которая позволит вам считать каждый раз, когда вы создаете один из пользовательских eventArgs.

Если вы не используете настраиваемые eventArgs, вы можете очень легко расширить eventArgs с помощью класса customEventArgs, который выполняет именно этот подсчет. Просто расширьте конструктор, чтобы обновить некоторую статическую переменную, которую вы можете записывать в журнал время от времени. Затем, используя быстрый рефакторинг, вы можете переименовать все ваши стандартные EventArgs в этот новый немного другой customEventArgs. Это займет все 10 минут и не нарушит существующий код.

Однако, если вы знаете, что профилировщик может это сделать, почему бы не использовать его? Если это гигантское приложение и вы пытаетесь выполнить очень небольшие оптимизации, для кого бы вы ни создавали это приложение, вероятно, не будут возражать против дополнительных расходов, связанных с приобретением вами лицензии в обмен на улучшения их программного обеспечения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...