Instrumentez votre application .NET dans Visual Studio (C#, C++, Visual Basic, F#)
Depuis la sortie de la version 17.5 de Visual Studio 2022, 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 la version 17.6 de Visual Studio 2022 Préversion 2, l’outil prend également en charge C/C++.
Il est similaire à l’outil Utilisation du processeur, sauf qu’il est basé sur le temps de l’horloge plutôt que sur l’utilisation du processeur. 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 performance.
Instrumenter votre application
Sélectionnez Alt+F2 (ou Déboguer > Profileur de performances) pour ouvrir le profileur de performances 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.
Note
Si vous ne pouvez pas 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. Vérifiez que votre projet est en mode Mise en production pour capturer les données les plus précises possible.
Sélectionnez le bouton Démarrer pour exécuter l’outil.
Sélectionnez les éléments de votre programme à instrumenter.
fr-FR:
À compter de la version 17.11 de Visual Studio 2022 Préversion 1, le profileur conserve les éléments sélectionnés pour la prochaine exécution du profilage.
Sélectionnez OK.
Une fois que l’outil a commencé à s’exécuter, parcourez le scénario à profiler dans votre application. Sélectionnez ensuite Arrêter la collection ou fermez l’application pour afficher vos données.
Analyser le rapport d'instrumentation
Vos données de profilage s’affichent dans Visual Studio.
La vue des 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 obtiendrez une vue plus détaillée.
Les données disponibles sont similaires à l'outil d'utilisation du processeur, sauf qu'elles sont basées sur le temps réel et le compte des appels au lieu de l'utilisation du processeur.
Analyser les aperçus
Si des insights apparaissent dans la section Insights principaux, utilisez le lien fourni pour obtenir plus d’informations sur le problème identifié. Pour plus d’informations, consultez Insights sur l’UC, mais sachez que les informations relatives à l’outil Instrumentation sont spécifiques à l’heure 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 conversation Copilot, et Copilot fournira des suggestions en fonction d’un examen de votre code et de tous les problèmes identifiés.
Analyser des rapports détaillés sur l’instrumentation
Pour analyser le rapport 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
- Graphique de flamme
Dans toutes les vues, à l’exception de l’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 cette fonction, ainsi qu'une mise en évidence montrant où le temps est passé 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 que la méthode affiche pour voir si le code ou les bibliothèques d'exécution tiers sont la raison pour laquelle vos points de terminaison sont lents ou leur consommation élevée de ressources.
Pour plus d'informations sur l'utilisation du Flame Graph, consultez Identifier les chemins chauds avec le Flame Graph.
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 utilisent le plus de temps d'horloge dans l’arborescence des appels.
Voici plus 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. Des valeurs Total élevées indiquent les fonctions qui consomment le plus de temps d'horloge.
Exclusif indique le temps passé dans le corps de la fonction, sans tenir compte du temps passé dans les fonctions appelées par celle-ci. Les valeurs élevées pour Self peuvent indiquer un goulot d'étranglement des performances au sein de la fonction.
Nombre d’appels indique le nombre de fois qu’une fonction est appelée.
Module Nom du module contenant la fonction.
Appels asynchrones dans l’arborescence des appels d’instrumentation (.NET)
À compter de Visual Studio 2022 version 17.13 Preview 2, les vues représentant une arborescence d’appels visuels imbriquent les appels asynchrones .NET sous les fonctions où l’appel asynchrone a été effectué, ce qui facilite le suivi du flux d’exécution dans une trace de pile unifiée unique. Cela peut vous aider à identifier rapidement les goulots d’étranglement des performances.
L’arborescence des appels de procédure unifiée s’affiche dans l’Arborescence des appels et la section Chemin chaud de la page Résumé. Les nœuds asynchrones apparaissent avec le descripteur [appel asynchrone].
Vous pouvez activer ou désactiver l'affichage d'une pile d'appels asynchrones assemblée en sélectionnant Assembler les piles asynchrones à partir de l’option Filtre dans la vue Résumé du profileur. Le paramètre est activé par défaut.