Отладка и повышение эффективности кода Winform C # - PullRequest
0 голосов
/ 06 октября 2009

Я написал приложение Winform на C #. Как я могу проверить производительность моего кода. Под этим я подразумеваю, как я могу проверить, какие ссылки на формы активны в данное время или событие, чтобы я мог удалить их, если они не нужны (сделать их доступными для сбора мусора). Есть ли способ сделать это, используя VS 2005 или любой бесплатный инструмент. Любые учебники или руководства будут полезны.

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

Спасибо

Ответы [ 3 ]

1 голос
/ 06 октября 2009

Red Gate Performance Profiler

... это было сказано здесь миллион раз раньше. Если вы подозреваете проблемы с производительностью, профилируйте ваше приложение. Он скажет вам, сколько времени занимают звонки, и укажет на узкие места в вашем коде.

1 голос
/ 06 октября 2009

Создание эффективного кода всегда для меня второстепенный шаг. Сначала я пишу код, чтобы он работал. Затем я профилирую его, если я недоволен работой. Правда в том, что большинство приложений запускаются достаточно быстро после того, как написали их впервые. Однако иногда требуется лучшая производительность. Производительность можно получить разными способами. Все зависит от вашего приложения. Я пишу в основном LOB-приложения, поэтому я имею дело с большим количеством операций ввода-вывода в базах данных, службах и хранилище. Все эти звонки очень дороги и должны быть ограничены, поэтому они являются моей первой областью для оптимизации. Я оптимизирую с помощью отложенной загрузки, быстрой загрузки, пакетных вызовов, менее частых вызовов и так далее. Недавно у меня было приложение winforms, которое создавало сотни элементов управления динамически, и это заняло много времени. Это еще одно узкое место, которое я должен решить. Я использую профилировщик для измерения производительности приложений.

Используйте бесплатный Equatec profiler . Он покажет вам, сколько времени занимает вызов и сколько раз был сделан вызов. Профилировщик дает хороший отчет и визуальное отображение, которое может детализировать стеки вызовов.

0 голосов
/ 06 октября 2009

Кобра

То, что вы ищете, называется Memory Profiler. Бывает, что есть одна (платная) версия для .NET, названная «.NET Memory Profiler», я не использовал ее широко, но она должна отвечать на вопросы, которые вы задаете. Есть несколько других, которые будут делать в основном то же самое, например, давать вам количество экземпляров загруженных типов и помогать вам определить, когда экземпляры не собираются сборщиком мусора по той или иной причине (например, ссылки на обработчики событий, статические свойства и т. Д.) .

Надеюсь, это поможет,

Dylan

...