#c# #.net #profiling
#c# #.net #профилирование
Вопрос:
У меня есть приложение c # Windows Forms, которое замедляется или даже зависает примерно через день после развертывания на сайте конкретного клиента. Я бы хотел переписать этот унаследованный проект с нуля, но на данный момент потенциальные источники проблемы довольно широко распространены.
Кто-нибудь может предложить способ выполнить некоторое базовое профилирование (даже профилирование «бедного человека» / break-and-sample) в приложении dotNET в живой среде без полного снижения производительности.
Учитывая серьезность замедления работы приложения, я полагаю, что всего нескольких точек данных должно быть достаточно, чтобы найти причину.
Комментарии:
1. Вы можете использовать счетчики производительности Windows. По крайней мере, вы можете начать с использования памяти, потоков, исключений и блокировок.
2. Трудно сказать, не зная, что делает приложение, но если это только на одном сайте клиента, это говорит о несоответствии среды или их модели использования (например, они никогда не перезапускают приложение …) отличается. Думаю, вам нужно сначала разобраться с тем, что это может быть. базовые счетчики производительности могут дать вам подсказку, но опять же может и не быть…
3. Visual Studio (Professional или выше) имеет встроенный профилировщик, который вы можете найти на вкладке Анализ.
4. Я думаю, что это должна быть отладочная сборка. Когда это становится действительно медленным, вам не понадобится больше пары снимков стека, чтобы увидеть, не кроется ли проблема в коде приложения. (Я думаю о других возможных проблемах, таких как GC, перегрузка памяти и т.д. Тем не менее, среди общей агонии пара стоп-шотов не причинит большего вреда.) Я не уверен, как вы получаете их на компьютере клиента.