Partager via


Fonctionnement des méthodes de profilage

Les outils de profilage Visual Studio fournissent cinq méthodes que vous pouvez utiliser pour collecter les données de performance.Cette rubrique décrit les différentes méthodes et suggère quelques scénarios dans lesquels la collecte de données avec une méthode particulière peut s'avérer appropriée.

[!REMARQUE]

Les fonctionnalités de sécurité renforcée dans Windows 8 et Windows Server 2012 nécessitaient d'importantes modifications de la manière dont le profileur Visual Studio collecte des données sur ces plateformes.Les applications Windows Store requièrent également de nouvelles techniques de collecte.Consultez Profilage d'applications Windows 8 et Windows Server 2012.

Méthode

Description

Échantillonnage

Collecte des données statistiques sur le travail effectué par une application.

Instrumentation

Collecte des informations détaillées de minutage sur chaque appel de fonction.

l'accès concurrentiel ;

Collecte des informations détaillées sur les applications multithreads.

Mémoire .NET

Collecte des informations détaillées sur l'allocation de mémoire .NET et le garbage collection.

Interaction de couche

Collecte des informations sur les appels de fonction ADO.NET synchrones à une base de données SqlServer.

Les données de profilage d'interaction de couche peuvent être collectées à l'aide de Visual Studio Ultimate, Visual Studio Premium, ou Visual Studio Professional .Toutefois, les données de profilage d'interaction de couche peuvent être affichées uniquement dans Visual Studio Premium ou Visual Studio Ultimate.

En utilisant certaines méthodes de profilage, vous pouvez également collecter des données supplémentaires, telles que des compteurs de performance logiciels et matériels.Pour plus d'informations, consultez Collecte de données de performance supplémentaires.

Échantillonnage

La méthode de profilage par échantillonnage collecte des données statistiques sur le travail effectué par une application pendant une exécution de profilage.La méthode d'échantillonnage est légère et a peu d'effet sur l'exécution des méthodes d'application.

L'échantillonnage est la méthode par défaut des outils de profilage Visual Studio.Il est utile pour :

  • Les explorations initiales de la performance de votre application.

  • Examen des problèmes de performances qui impliquent l'utilisation du processeur (UC).

La méthode de profilage par échantillonnage interrompt le processeur de l'ordinateur à intervalles définis et collecte la pile des appels de fonction.Les nombres d'exemples exclusifs sont incrémentés pour la fonction qui s'exécute et les nombres inclusifs sont incrémentés pour toutes les fonctions d'appel sur la pile des appels.Les rapports d'échantillonnage présentent les totaux de ces nombres pour le module, la fonction, la ligne de code source et l'instruction profilés.

Par défaut, le profileur définit l'intervalle d'échantillonnage sur des cycles microprocesseurs.Vous pouvez modifier le type d'intervalle pour choisir un autre compteur de performance d'UC et définir le nombre d'événements de compteur pour l'intervalle.Vous pouvez également collecter des données de profilage d'interaction de couche (TIP) qui fournissent des informations sur les requêtes exécutées sur une base de données SQL Server via ADO.NET.

Collecte de statistiques de performance à l'aide de l'échantillonnage

Fonctionnement des valeurs de données d'échantillonnage dans des outils de profilage

Vues de données de la méthode d'échantillonnage du profileur

Instrumentation

La méthode de profilage par instrumentation collecte les informations de minutage détaillées pour les appels de fonction dans une application profilée.Le profilage par instrumentation est utile pour :

  • Examen des goulots d'étranglement d'entrée/sortie tels que l'E/S de disque.

  • Examen détaillé d'un module ou ensemble de fonctions particulier.

La méthode d'instrumentation injecte le code dans un fichier binaire qui capture les informations de minutage pour chaque fonction du fichier instrumenté et chaque appel de fonction passé par ces fonctions.L'instrumentation identifie également si une fonction fait appel au système d'exploitation pour des opérations telles que l'écriture dans un fichier.Les rapports d'instrumentation utilisent quatre valeurs pour représenter le temps total passé dans une fonction ou une ligne de code source :

  • Temps inclusif écoulé : temps total passé dans l'exécution de la fonction ou de la ligne source.

  • Temps inclusif d'application : temps passé dans l'exécution de la fonction ou de la ligne source, à l'exception du temps passé dans les appels au système d'exploitation.

  • Temps exclusif écoulé : temps passé dans l'exécution du code dans le corps de la fonction ou de la ligne de code source.Le temps passé dans l'exécution des fonctions appelées par la fonction ou la ligne source est exclu.

  • Temps exclusif d'application : temps passé dans l'exécution du code dans le corps de la fonction ou de la ligne de code source.Le temps passé dans l'exécution des appels au système d'exploitation et le temps passé dans l'exécution des fonctions appelées par la fonction ou la ligne source sont exclus.

Vous pouvez également collecter à la fois les compteurs de performance d'UC et de logiciel à l'aide de la méthode d'instrumentation.

Fonctionnement des valeurs de données d'instrumentation dans des outils de profilage

Collecte de données de temporisation détaillées à l'aide de l'instrumentation

Vues de données de la méthode d'instrumentation du profileur

l'accès concurrentiel ;

Le profilage d'accès concurrentiel collecte des informations sur les applications multithreads.Le profilage de conflit de ressources collecte des informations détaillées de pile des appels chaque fois que des threads en concurrence sont forcés d'attendre l'accès à une ressource partagée.La visualisation concurrentielle collecte également davantage d'informations générales sur l'interaction de votre application multithread avec elle-même, le matériel, le système d'exploitation et d'autres processus sur l'ordinateur hôte :

  • Les rapports de conflit de ressources affichent le nombre total de conflits et le temps total d'attente passé pour une ressource pour les modules, les fonctions, les lignes de code source et les instructions.Les graphiques de chronologie affichent également les conflits tels qu'ils se sont produits.

  • Le visualiseur concurrentiel affiche des informations graphiques que vous pouvez utiliser pour localiser les goulots d'étranglement au niveau des performances, la sous-utilisation de l'UC, les conflits de threads, la migration de threads, les délais de synchronisation, les zones d'E/S avec chevauchement et d'autres informations.Lorsque cela s'avère possible, la sortie graphique est reliée à la pile des appels et aux données de code source.Les données de visualisation concurrentielle peuvent être collectées uniquement pour la ligne de commande et les applications Windows.

Fonctionnement des valeurs de données de conflit de ressources dans les outils de profilage

Collecte de données de concurrence de threads et de processus

Vues de données de conflit de ressources

Visualiseur concurrence

Mémoire .NET

La méthode de profilage d'allocation de mémoire .NET interrompt le processeur de l'ordinateur à chaque allocation d'un objet .NET Framework dans une application profilée.Lorsque les données de durée de vie de l'objet sont également collectées, le profileur interrompt le processeur après chaque garbage collection .NET Framework.

Le profileur collecte des informations sur le type, la taille et le nombre des objets créés dans une allocation ou détruits dans un garbage collection.

  • Lorsqu'un événement d'allocation se produit, le profileur collecte des informations supplémentaires sur la pile des appels de fonction.Les nombres d'allocations exclusifs sont incrémentés pour la fonction actuellement exécutée et les nombres inclusifs sont incrémentés pour toutes les fonctions d'appel sur la pile des appels. Les rapports .NET présentent les totaux de ces nombres pour les types, les modules, les fonctions, les lignes de code source et les instructions profilés.

  • Lorsqu'un garbage collection se produit, le profileur collecte des données sur les objets détruits et des informations sur les objets de chaque génération de garbage collection.À la fin de l'exécution du profilage, le profileur enregistre des données sur les objets qui n'ont pas été détruits explicitement.Le rapport Durée de vie des objets affiche les totaux pour chaque type alloué dans l'exécution du profilage.

Les profils de mémoire .NET peuvent être utilisés en mode d'échantillonnage ou d'instrumentation.Le mode que vous sélectionnez n'affecte pas les rapports Allocation et Durée de vie des objets qui sont uniques aux profils de mémoire .NET :

  • Lorsque vous exécutez les profils de mémoire .NET en mode d'échantillonnage, le .NET du profileur utilise des événements d'allocation de mémoire comme intervalle et affiche le nombre d'objets alloués et le nombre total d'octets alloués comme valeurs inclusives et exclusives dans les rapports.

  • Lorsque vous exécutez les profils de mémoire .NET en mode d'instrumentation, des informations détaillées de minutage sont collectées avec les valeurs d'allocation inclusives et exclusives.

Fonctionnement de l'allocation de mémoire et des informations de durée de vie des objets dans les outils de profilage

Collecte de données liées à l'allocation et à la durée de vie de la mémoire .NET

Vues de données de mémoire .NET des outils de profilage

Interaction de couche

Le profilage d'interaction de couche ajoute des informations à un fichier de données de profilage sur les appels ADO.NET synchrones entre une page ASP.NET ou une autre application et une base de données SQL Server.Les données incluent le nombre d'appels et l'heure, ainsi que le nombre maximal et minimal d'appels.Les données d'interaction de couche peuvent être ajoutées aux données de profilage collectées avec les méthodes d'échantillonnage, d'instrumentation, de mémoire .NET ou de concurrence.

Données d'interaction de couche collectées par les outils de profilage

Données de profilage d'interaction de couche

Collecte des données sur l'interaction de couche à l'aide de l'IDE de Visual Studio

Vues Interactions de couche

Voir aussi

Tâches

Comment : profiler un site Web ou une application Web à l'aide de l'Assistant Performance

Concepts

Guide du débutant en profilage des performances