2010-03-12 3 views
0

J'écris beaucoup de plug-ins basés sur .NET pour d'autres programmes qui sont généralement compilés en tant que DLL, ce qui revient à démarrer l'application native. J'ai utilisé le profileur d'Equatec, qui fonctionne très bien, mais j'aimerais maintenant avoir quelque chose avec plus de fonctionnalités, y compris la possibilité de profiler l'utilisation de la mémoire.Quels performances .NET et/ou profils de mémoire me permettront de profiler une DLL?

J'ai essayé Ant Profiler de Red Gate, mais pour autant que je puisse voir il n'y a aucun moyen de profiler une DLL. La seule option est de profiler un EXE. Donc, ma question est de savoir quels sont les autres outils de profilage qui me permettront de profiler une DLL de bibliothèque unique plutôt qu'un fichier EXE. Je suppose que cela nécessiterait l'injection de code de profil dans la bibliothèque comme le fait Equatec?

Répondre

0

.Net Memory Validator et .Net Performance Validator vous permettent tous deux de profiler juste un dll.

Vous devez spécifier les DLL qui vous intéressent (ou non) dans la partie "Hooked DLLs" de la boîte de dialogue des paramètres. Puis lancez votre application - seules les données de la DLL spécifiée sont collectées. Description complète: Je suis un ingénieur logiciel de l'entreprise qui crée ces outils.

1

Oui, cela fonctionne de cette façon. Une DLL est juste un blob de code, il est fusionné avec le code dans le fichier EXE. Une DLL ne peut pas "posséder" de la mémoire, un AppDomain fait. Vous pouvez cependant voir combien de temps est passé dans le code provenant d'une DLL.

Si vous écrivez un programme de test qui n'effectue lui-même aucune allocation de mémoire majeure mais appelle les méthodes des classes dans la DLL, vous pouvez attribuer l'utilisation de la mémoire à la DLL sans problème. Écrire un tel programme de test et le faire ressembler à la façon dont le code DLL est utilisé dans un vrai programme n'est cependant pas si simple.

0

Cela peut ne plus être pertinente pour vous, mais je pensais que je mettrais ici pour la postérité, Redgate Les fourmis profileur ne vous permettent d'éditer le profil d'un seul dll en utilisant un filtre personnalisé:

http://www.red-gate.com/supportcenter/content/ANTS_Profiler/articles/profiling_single_dotnet_assembly

Nous configurons le profil de performance de "CoolApp" de la manière habituelle, en utilisant l'assistant de projet ANTS Profiler 3. L'écran final de l'assistant est le point auquel nous pouvons personnaliser le projet pour limiter le profilage à une seule bibliothèque. Nous spécifions que nous voulons utiliser un filtre personnalisé pour limiter les zones de l'application qui seront profilées.

Nous éditons le filtre personnalisé et spécifions que nous sommes uniquement intéressés par le profilage d'un espace de noms particulier, comme indiqué ci-dessous. Dans ce cas, nous configurons un filtre qui provoquera ANTS Profiler à uniquement les méthodes de profil qui font partie de l'espace de noms RedGate.Library1. C'est exactement ce que nous voulons, et nous sommes maintenant prêts à commencer le profilage.

Nous pouvons maintenant procéder au profilage de la manière habituelle. Toutefois, lorsque nous obtenons des résultats de profilage de performances, soit en prenant un instantané, soit en fermant l'application, ils ne contiennent que des données sur les méthodes dans RedGate.Library1.dll.

Texte inclus du site Web au cas où ce lien disparaîtrait.

Questions connexes