библиотека / рекомендация API для добавления инструментария в код

#c# #.net-2.0 #wmi

#c# #.net-2.0 #wmi

Вопрос:

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

Ответ №1:

Я видел, как это делается с помощью платформы AOP PostSharp, подключенной к счетчикам производительности Windows ( System.Diagnostics.PerformanceCounter ). Один из их вводных фрагментов примера кода показывает, как это сделать:

http://www.sharpcrafters.com/solutions/performance

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

Если вы просто хотите найти узкие места в своем коде и вам не нужно проводить оперативную диагностику, я предлагаю вам просто использовать профилировщик, такой как встроенный в VS или Ants Profiler (как уже предложил Крис). Затем запустите отредактированную копию ваших производственных данных в вашем коде, чтобы ваши показатели производительности соответствовали производительности.

Комментарии:

1. Мне не обязательно отслеживать их в режиме реального времени. Моя проблема в том, что приложение запущено в 10 разных местах расположения клиентов. И данная функциональность работает медленно в 3 из этих 10 местоположений. Я не могу профилировать приложение в этих местах расположения клиентов, но если у меня есть какой-то тип инструментария, это даст мне некоторое представление о том, какие методы занимают много времени.

2. @Silverlight: если он уже запущен, и вы не можете повторно развернуть, то вы можете застрять. Но если вы можете повторно развернуть, то счетчики производительности являются стандартным способом, и вы можете настроить свой код с помощью этих счетчиков производительности через AOP. Я использовал здесь «реальное время» в неправильном смысле — я имею в виду, что вы можете проводить измерения в реальном времени по вызовам в работающей системе, а не полагаться на дублирование одних и тех же сценариев в автономном режиме. Я отредактировал свой ответ, чтобы удалить неправильный термин 🙂

Ответ №2:

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

В Google есть профилировщик RedGate ANTS или JetBrains dotTrace. Если у вас есть VS2010 Premium, он имеет встроенный. Это даст вам представление о том, что происходит на уровне метода с точки зрения времени.

Ответ №3:

Как правило, профилировщик позаботится об измерении производительности.

Если вам нужно самостоятельно измерить время, часто достаточно секундомера с какой-либо трассировкой.