Какие профили производительности и / или памяти .NET позволят мне профилировать DLL? - PullRequest
0 голосов
/ 12 марта 2010

Я пишу много плагинов на основе .NET для других программ, которые обычно компилируются в виде DLL, которая запускается при помощи собственного приложения. Я использовал профилировщик Equatec, который прекрасно работает, но теперь хотел бы получить что-то с большим количеством функций, включая возможность профилировать использование памяти.

Я попробовал Ant Profiler от Red Gate, но, насколько я вижу, нет способа профилировать DLL. Единственный вариант - профилировать EXE.

Так что мой вопрос в том, какие другие инструменты профилирования доступны, что позволит мне профилировать одну библиотеку DLL, а не EXE. Я предполагаю, что для этого потребуется ввести код профиля в библиотеку, как это делает Equatec?

Ответы [ 3 ]

1 голос
/ 12 марта 2010

Да, это так работает. DLL - это просто кусок кода, он сливается с кодом в EXE. DLL не может «владеть» какой-либо памятью, а AppDomain. Однако вы можете увидеть, сколько времени тратится на код, полученный из DLL.

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

0 голосов
/ 25 мая 2012

Это может больше не относиться к вам, но я подумал, что выложу это здесь для потомков, профилировщик Redgate Ants позволяет вам профилировать одну dll с помощью специального фильтра:

http://www.red -gate.com / SupportCenter / содержание / ANTS_Profiler / статьи / profiling_single_dotnet_assembly

Мы настроили профилирование производительности CoolApp обычным способом, используя мастер проектов ANTS Profiler 3. Последний экран мастера - это точка, в которой мы можем настроить проект так, чтобы профилирование ограничивалось только одной библиотекой. Мы указываем, что мы хотим использовать пользовательский фильтр для ограничения областей приложения, которые будут профилированы.

Мы редактируем пользовательский фильтр и указываем, что нас интересует только профилирование определенного пространства имен, как показано ниже. В этом случае мы устанавливаем фильтр, который заставит ANTS Profiler только профилировать методы, которые являются частью пространства имен RedGate.Library1. Это именно то, что мы хотим, и теперь мы готовы начать профилирование.

Теперь мы можем продолжить профилирование обычным способом. Однако когда мы получим результаты профилирования производительности, сделав снимок или закрыв приложение, они будут содержать только данные о методах в RedGate.Library1.dll.

Включен текст с веб-сайта на случай, если эта ссылка когда-либо прекратится.

0 голосов
/ 19 марта 2010

.Net Memory Validator и .Net Performance Validator оба позволяют профилировать только DLL.

Вы должны указать библиотеки DLL, которые вас интересуют (или не интересуют) в разделе «Подключенные библиотеки DLL» диалогового окна настроек. Затем запустите ваше приложение - будут собраны только данные из указанной DLL.

Полное раскрытие: я инженер-программист в компании, которая создает эти инструменты.

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