Partager via


Fonctionnalités de l'API de profilage

Mise à jour : novembre 2007

L'API de profilage fournit des informations à propos de divers événements et actions qui se produisent dans le Common Language Runtime (CLR). Vous pouvez utiliser ces informations pour surveiller les mécanismes internes des processus et analyser les performances de votre application .NET Framework.

Fonctionnalités prises en charge

L'API de profilage récupère des informations à propos des actions et événements suivants qui se produisent dans le CLR :

  • Événements liés au démarrage et à l'arrêt du CLR.

  • Événements liés à la création et à l'arrêt de domaines d'application.

  • Événements liés au chargement et au déchargement des assemblys.

  • Événements liés au chargement et au déchargement des modules.

  • Événements liés à la création et la destruction de vtable COM.

  • Événements liés à la compilation juste-à-temps (JIT) et à la suspension du code (code-pitching).

  • Événements liés au chargement et au déchargement des classes.

  • Événements liés à la création et la destruction de threads.

  • Événements liés à l'entrée et à la sortie de fonctions.

  • Exceptions.

  • Transitions entre exécutions de code managé et de code non managé.

  • Transitions entre contextes d'exécution différents.

  • Informations à propos des arrêts du runtime.

  • Informations à propos de l'activité du tas de mémoire d'exécution (runtime) et de garbage collection.

L'API de profilage peut être appelée à partir de tout langage (non managé) compatible COM.

L'API est performante par rapport au processeur et à la consommation de mémoire. Le profilage n'implique pas les modifications apportées à l'application profilée qui sont assez significatives pour générer des résultats trompeurs.

L'API de profilage est utile à la fois pour les profils d'échantillonnage et les profileurs de non-échantillonnage. Un profileur d'échantillonnage inspecte le profil à des battements d'horloge réguliers, par exemple, toutes les cinq millisecondes. Un profileur de non-échantillonnage est informé de façon synchrone d'un événement avec le thread qui provoque l'événement.

Fonctionnalité non prise en charge

L'API de profilage ne prend pas en charge les fonctionnalités suivantes :

  • Code non managé. L'API de profilage CLR fonctionne uniquement pour le code managé. Vous devez utiliser des mécanismes Win32 classiques pour profiler le code non managé. Toutefois, le profileur CLR inclut des événements de transition pour déterminer les limites entre code managé et code non managé.

  • Applications auto-modifiables. L'API de profilage ne prend pas en charge les applications qui modifient leur propre code à des fins telles que la programmation orientée aspect.

  • Vérification de limites. L'API de profilage ne fournit pas les informations qui sont requises pour vérifier les limites. Le CLR prend en charge de façon intrinsèque la vérification des limites de tout le code managé.

  • Profilage distant. Les interfaces du profileur de code CLR ne prennent pas en charge le profilage distant pour les raisons suivantes :

    • Le profilage distant étend le temps d'exécution. Lorsque vous utilisez les interfaces de profileur, vous devez réduire le temps d'exécution afin que les résultats du profilage ne soient pas excessivement affectés. Ceci est particulièrement vrai lorsque la performance d'exécution est surveillée. Toutefois, le profilage distant n'est pas une limitation lorsque les interfaces de profileur sont utilisées pour surveiller l'utilisation de la mémoire ou pour obtenir des informations d'exécution à propos des frames de pile, objets, et ainsi de suite.

    • Le profileur de code CLR doit enregistrer une ou plusieurs interfaces de rappel auprès du runtime sur l'ordinateur local sur lequel l'application profilée s'exécute. Cela limite la capacité de créer un profileur de code distant.

  • Le profilage dans des environnements de production exigeant une haute disponibilité. L'API de profilage a été créée pour prendre en charge les diagnostics de développement. Il n'a pas subi les tests rigoureux requis pour la prise en charge des environnements de production.

Voir aussi

Autres ressources

Profilage dans le .NET Framework

Vue d'ensemble du profilage