Instrumenter vos applications .NET dans Visual Studio (C#, C++, Visual Basic, F#)
Depuis la sortie de Visual Studio 2022 version 17.5, vous pouvez utiliser le nouvel outil dynamique Instrumentation. Cet outil indique le nombre exact de fois où vos fonctions sont appelées et est plus rapide que la version précédente de l’outil Instrumentation. Cet outil prend en charge l’instrumentation .NET Core sans avoir besoin de PDB. À compter de Visual Studio 2022 version 17.6 Preview 2, l’outil prend également en charge C/C++.
Il est similaire à l’outil Utilisation de l’UC, sauf qu’il est basé sur le temps de l’horloge plutôt que sur l’utilisation de l’UC. Cela signifie que le temps bloqué, tel que le temps passé à attendre des verrous, apparaît dans la trace d’instrumentation (ce qui n’est pas le cas dans l’outil Utilisation du processeur). Pour plus d’informations sur l’apprentissage de l’utilisation efficace de l’outil Instrumentation, consultez Vue d’ensemble de l’instrumentation et étude de cas : Isoler un problème de performances.
Instrumenter votre application
Sélectionnez Alt+F2 (ou Débogage > Profileur de performances) pour ouvrir le profileur de performance dans Visual Studio.
Cochez la case Instrumentation.
Si vous activez l’option Démarrer avec la collecte suspendue avant de démarrer le profileur, les données ne sont pas collectées tant que vous ne sélectionnez pas le bouton Enregistrer dans la vue de session de diagnostic.
Remarque
S’il n’est pas possible de sélectionner l’outil, décochez la case de tous les autres outils, car certains outils doivent s’exécuter seuls. Pour en savoir plus sur l’exécution d’outils ensemble, consultez Utilisation simultanée de plusieurs outils du profileur.
Si l’outil n’est toujours pas disponible, vérifiez que votre projet répond aux exigences précédentes. Assurez-vous que votre projet est en mode Mise en production pour capturer les données les plus précises.
Sélectionnez le bouton Démarrer pour exécuter l’outil.
Sélectionnez les éléments de votre programme à instrumenter.
À compter de Visual Studio 2022 version 17.11 préversion 1, le profileur conserve les éléments sélectionnés pour la prochaine exécution du profilage.
Cliquez sur OK.
Une fois l’outil en cours d’exécution, parcourez le scénario de votre choix pour établir un profil dans votre application. Sélectionnez ensuite Arrêter la collection ou fermez l’application pour afficher vos données.
Analyser le rapport Instrumentation
Vos données de profilage s’affichent dans Visual Studio.
La vue Données d’instrumentation affiche une liste de fonctions, classées par durée d’exécution décroissante sous Fonctions principales. La section Chemin chaud vous montre la pile des appels pour les fonctions qui utilisent le plus de temps. Ces listes vous permettent de repérer les fonctions dans lesquelles se produisent des goulots d’étranglement.
Cliquez sur une fonction qui vous intéresse et vous verrez une vue plus détaillée.
Les données disponibles sont similaires à celles de l'outil Utilisation du processeur, sauf qu'elles sont basées sur le temps d'horloge murale et le nombre d'appels au lieu de l'utilisation du processeur.
Analyser les insights
Si un aperçu apparaît dans la section Top Insights, utilisez le lien fourni pour obtenir plus d'informations sur le problème identifié. Pour plus d'informations, voir Informations processeur, mais sachez que les informations destinées à l'outil d'instrumentation sont spécifiques au temps de l'horloge murale et non à l'utilisation du processeur.
En outre, si vous utilisez Copilot, utilisez le bouton Demander à Copilot pour ouvrir la fenêtre de discussion de Copilot, et Copilot fournira des suggestions basées sur un examen de votre code et de tout problème identifié.
Analyser les rapports détaillés de l'instrumentation
Pour analyser le rapport sur l'instrumentation, cliquez sur Ouvrir les détails ou cliquez sur l’une des fonctions principales pour ouvrir la vue Fonctions.
Le rapport fournit différentes vues des données de diagnostic :
- Appelant/appelé
- Arborescence des appels
- Modules
- Fonctions
- Graphe de flamme
Dans toutes les vues, à l’exception de Appelant/appelé, le rapport de diagnostic est trié par Total [unité, %], du plus élevé au plus bas. Changez l’ordre de tri ou la colonne de tri en sélectionnant les en-têtes de colonnes. Vous pouvez double-cliquer sur une fonction qui vous intéresse, et vous verrez la source de la fonction ainsi que l’endroit où le temps est consacré dans cette fonction. Le tableau contient des colonnes avec des données comme le temps passé dans la fonction, y compris les fonctions appelées (Total), et une deuxième colonne qui montre le temps passé dans une fonction, à l’exclusion des fonctions appelées (Exclusif).
Ces données peuvent vous aider à évaluer si la fonction elle-même est un goulot d’étranglement. Déterminez la quantité de données affichées par la méthode pour voir si du code ou des bibliothèques d’exécution tiers sont la raison pour laquelle vos points de terminaison sont lents ou consomment beaucoup de ressources.
Pour plus d’informations sur l’utilisation du graphe de type flamme, consultez Identifier les chemins chauds avec un graphe de type flamme.
Arborescence des appels d'instrumentation
Pour afficher l’arborescence des appels, sélectionnez le nœud parent dans le rapport. Par défaut, la page Instrumentation s’ouvre sur la vue Appelant/appelé. Dans la liste déroulante Affichage actuel, sélectionnez Arborescence des appels. L'arborescence des appels peut vous aider à identifier rapidement les goulots d'étranglement des performances.
Vous pouvez cliquer sur les boutons Développer le chemin réactif et Afficher le chemin réactif pour afficher les appels de fonction qui présentent le plus de temps processeur dans l’arborescence des appels.
Voici davantage d’informations sur les valeurs de colonne :
Total indique le temps passé dans la fonction et dans toutes les fonctions appelées par celle-ci. Les valeurs élevées de Total indiquent les fonctions qui consomment le plus de temps d'horloge.
Exclusif indique le temps passé dans le corps de la fonction, à l'exclusion du temps passé dans les fonctions appelées par celle-ci. Des valeurs élevées dans la colonne Exclusif peuvent indiquer un goulot d’étranglement des performances au sein de la fonction.
Compte d'appels indique le nombre de fois qu'une fonction est appelée.
Module Le nom du module contenant la fonction.