Commencez par examiner les outils de profilage (C#, Visual Basic, C++, F#)
Les outils de mesure des performances des applications sont essentiels pour les développeurs qui souhaitent optimiser leur code et améliorer les performances des applications. Visual Studio offre une gamme d’outils de profilage et de diagnostic qui peuvent vous aider à diagnostiquer l’utilisation de la mémoire et du processeur et d’autres problèmes au niveau de l’application. Avec ces outils, vous pouvez accumuler des données de performances pendant l’exécution de votre application. Un profileur peut vous aider à prendre des décisions éclairées rapidement en fournissant une représentation visuelle des temps d’exécution et de l’utilisation du processeur pour votre application. Dans cet article, nous vous proposons un aperçu rapide des outils de profilage les plus courants.
Pour obtenir de l’aide sur le choix de l’outil approprié ou pour voir la prise en charge des outils de profilage pour différents types d’applications, consultez Quel outil dois-je utiliser ? Pour un didacticiel qui montre une approche générale de l’optimisation du code à l’aide des outils de profilage, consultez Étude de cas : Guide du débutant pour optimiser le code.
Pour une expérience optimale avec cette documentation, choisissez votre langage de développement ou runtime préféré dans la liste en haut de l’article.
Mesurer les performances dans les builds de mise en production
Les outils du Profileur de performances sont destinés à fournir une analyse pour les builds Release. Dans le Profileur de performances, vous pouvez collecter des informations de diagnostic pendant l’exécution de l’application, puis examiner les informations collectées après l’arrêt de l’application (analyse post-mortem).
Ouvrez le Profileur de performances en choisissant Déboguer>Profileur de performances (ou Alt + F2).
capture d’écran
capture d’écran
Pour plus d’informations sur l’utilisation du processeur ou de la mémoire dans le Profileur de performances par rapport aux outils intégrés au débogueur, consultez Exécuter des outils de profilage sur les builds de mise en production ou de débogage.
Les outils disponibles dans le Profileur de performances sont les suivants :
- Utilisation du processeur
- Utilisation de la mémoire
- Instrumentation
- Entrée/Sortie de fichier
- utilisation du GPU
Pour afficher la prise en charge des outils de profilage pour différents types d’applications, consultez Quel outil dois-je utiliser ?.
Dans certains scénarios, la fenêtre vous permet de sélectionner plusieurs outils de profilage. Les outils tels que l’utilisation du processeur peuvent fournir des données complémentaires que vous pouvez utiliser pour faciliter votre analyse. Vous pouvez également utiliser le profileur de ligne de commande pour activer des scénarios impliquant plusieurs outils de profilage.
Mesurer les performances lors du débogage
Les outils de profilage auxquels vous pouvez accéder pendant une session de débogage sont disponibles dans la fenêtre Outils de diagnostic. La fenêtre Outils de diagnostic s’affiche automatiquement, sauf si vous l’avez désactivée. Pour afficher la fenêtre, cliquez sur Déboguer / Windows / Afficher les outils de diagnostic (ou appuyez sur Ctrl + Alt + F2). Une fois la fenêtre ouverte, vous pouvez sélectionner les outils pour lesquels vous souhaitez collecter des données.
fenêtre Outils de diagnostic
Pendant que vous déboguez, vous pouvez utiliser la fenêtre Outils de diagnostic pour analyser l’utilisation du processeur, l’utilisation de la mémoire, les compteurs .NET et afficher les événements qui affichent des informations relatives aux performances.
fenêtre Outils de diagnostic
Pendant le débogage, vous pouvez utiliser la fenêtre Outils de diagnostic pour analyser l’utilisation du processeur et de la mémoire, et afficher les événements qui affichent des informations relatives aux performances.
La fenêtre Outils de diagnostic est un moyen courant de profiler des applications, mais pour les builds Release, vous pouvez également effectuer une analyse post-mortem de votre application à la place. Pour plus d’informations sur différentes approches, consultez Exécuter des outils de profilage sur les builds de mise en production ou de débogage. Pour afficher la prise en charge des outils de profilage pour différents types d’applications, consultez Quel outil dois-je utiliser ?.
Les outils disponibles dans la fenêtre Outils de diagnostic ou pendant une session de débogage sont les suivants :
Conseil
Utilisez la relance pour ignorer la page de lancement et exécuter automatiquement avec vos paramètres précédents en appuyant sur Alt+F2 ou en cliquant sur Débogage > Performance Profiler.
Note
Windows 8 et versions ultérieures sont requises pour faire fonctionner les outils de profilage avec le débogueur (Fenêtre des Outils de diagnostic).
Analyser l’utilisation du processeur
L’outil Utilisation du processeur est un bon endroit pour commencer à analyser les performances de votre application. Il vous indiquera plus d’informations sur les ressources processeur que votre application consomme. Vous pouvez utiliser l’outil Utilisation du processeur intégré au débogueur ou l’outil Utilisation du processeur post mortem.
Lorsque vous utilisez l’outil d’utilisation du processeur intégré au débogueur, ouvrez la fenêtre Outil diagnostics (si elle est fermée, choisissez Déboguer / Windows / Afficher les outils de diagnostic). Pendant le débogage, ouvrez la vue Résumé, puis sélectionnez Enregistrer le profil du processeur.
L’une des façons d’utiliser l’outil consiste à définir deux points d’arrêt dans votre code, un au début et à l’autre à la fin de la fonction ou à la région du code que vous souhaitez analyser. Examinez les données de profilage lorsque vous avez marqué une pause au deuxième point d’arrêt.
La vue Utilisation de l’UC affiche une liste de fonctions classées par ordre de durée d’exécution, la fonction la plus longue se trouvant en haut sous Fonctions principales. La section Chemin chaud vous montre la pile d’appels pour les fonctions qui utilisent le plus d’UC. Ces listes vous permettent de repérer les fonctions dans lesquelles se produisent des goulots d’étranglement.
L’affichage utilisation du processeur montre une liste des fonctions classées par durée d'exécution, avec la fonction s'exécutant le plus longtemps en haut. Cette liste vous permet 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 de l'arborescence d'appels plus détaillée , avec la fonction sélectionnée mise en surbrillance. Le tableau montre les colonnes avec des données comme le temps passé dans la fonction, y compris les fonctions appelées (Processeur total), et une deuxième colonne qui montre le temps passé dans une fonction, à l’exclusion des fonctions appelées (Processeur auto). Ces données peuvent vous aider à déterminer si la fonction elle-même est un goulot d’étranglement des performances.
Conseil
Le profileur Visual Studio prend en charge la collecte et l’affichage des traces. Le profileur peut également afficher les traces qui ont été collectées précédemment par d’autres outils, tels que dotnet-trace. Dotnet-trace produit des résultats d’échantillonnage, et non une trace instrumentée. Pour plus d’informations, consultez dotnet-trace.
Cliquez sur une fonction qui vous intéresse, et vous verrez une vue « papillon » en trois volets plus détaillée, avec la fonction sélectionnée au milieu de la fenêtre, la fonction appelante à gauche et les fonctions appelées à droite. La section Corps de la fonction montre la durée totale (et le pourcentage correspondant) passée dans le corps de la fonction, à l’exclusion du temps passé dans les fonctions appelantes et appelées. Ces données peuvent vous aider à déterminer si la fonction elle-même est un goulot d’étranglement des performances.
Analyser l’utilisation de la mémoire
La fenêtre Outils de diagnostic vous permet également d’évaluer l’utilisation de la mémoire dans votre application à l’aide de l’outil Utilisation de la mémoire. Par exemple, vous pouvez consulter le nombre et la taille des objets sur le tas. Vous pouvez utiliser l’outil Utilisation de la mémoire intégré au débogueur ou l’outil Utilisation de la mémoire post-mortem dans le Profileur de performances.
Les développeurs .NET peuvent choisir entre l’outil d’allocation d’objets .NET ou l’outil utilisation de la mémoire.
- L'outil de l'allocation d'objets .NET vous aide à identifier les modèles d'allocation et les anomalies dans votre code .NET, ainsi que les problèmes courants liés au ramasse-miettes. Cet outil s’exécute uniquement en tant qu’outil post-mortem. Vous pouvez exécuter cet outil sur des ordinateurs locaux ou distants.
- L'outil d'utilisation de la mémoire est utile pour identifier les fuites de mémoire, qui ne sont généralement pas fréquentes dans les applications .NET. Si vous avez besoin d’utiliser les fonctionnalités du débogueur lors de la vérification de la mémoire, comme passer d’une ligne de code à une autre, il est recommandé d’utiliser l’outil Utilisation de la mémoire intégré au débogueur.
Pour analyser l’utilisation de la mémoire avec l’outil Utilisation de la mémoire, vous devez prendre au moins un instantané de mémoire. Souvent, la meilleure façon d’analyser la mémoire consiste à prendre deux instantanés ; le premier juste avant un problème de mémoire soupçonné, et le deuxième instantané juste après un problème de mémoire soupçonné se produit. Vous pouvez ensuite afficher une différence entre les deux captures instantanées et voir exactement ce qui a changé. L’illustration suivante montre la prise d’un instantané avec l’outil intégré au débogueur.
Lorsque vous sélectionnez l’un des liens de flèche, vous avez une vue différentielle du tas (une flèche vers le haut rouge affiche un nombre croissant d’objets (gauche) ou une taille de tas croissante (droite)). Si vous cliquez sur le lien de droite, vous obtenez une vue de tas différentielle qui indique en premier les objets dont la taille a augmenté le plus dans le tas. Cela peut vous aider à identifier les problèmes de mémoire. Par exemple, dans l’illustration ci-dessous, les octets utilisés par ClassHandlersStore
objets ont augmenté de 3 492 octets dans le deuxième instantané.
Par contre, si vous cliquez sur le lien sur la gauche dans la vue Utilisation de la mémoire, la vue du tas est organisée par nombre d’objets ; les objets d’un type particulier dont le nombre a le plus augmenté sont affichés en haut (en fonction de la colonne Différence de nombre).
Instrumentation
L’outil Instrumentation est similaire à l’outil Utilisation du processeur, sauf qu’il fournit le nombre exact d’appels et le temps d’horloge murale plutôt que l’utilisation du processeur. La méthode d'instrumentation nécessite plus de ressources supplémentaires que l'outil de l'utilisation du CPU. Cet outil est disponible dans le Profileur de performances. Ouvrez le Profileur de performances en choisissant Déboguer>Profileur de performances (ou Alt + F2). Pour plus d’informations, consultez Instrumentation.
Examiner l'entrée/sortie de fichiers
L’outil d’E/S de vous aide à comprendre comment optimiser vos opérations d’E/S de fichier pour améliorer les performances de vos applications. Si vous essayez d’examiner et de diagnostiquer les temps de chargement lents, le nouvel outil de gestion de fichier E/S peut vous aider à comprendre comment les opérations d’E/S impactent le temps que vous consacrez. Cet outil est disponible dans le Profileur de performances. Ouvrez le Profileur de performances en choisissant Déboguer > Profileur de performances (ou Alt + F2).
L’outil affiche les opérations de lecture et d’écriture de fichier dans un affichage de liste à onglets.
Examiner les performances à l’aide de PerfTips
Souvent, le moyen le plus simple d’afficher les informations de performances consiste à utiliser PerfTips. À l’aide de PerfTips, vous pouvez afficher les informations de performances lors de l’interaction avec votre code. Vous pouvez vérifier des informations telles que la durée de l’événement (mesurée à partir du moment où le débogueur a été mis en pause pour la dernière fois ou lorsque l’application a démarré). Par exemple, si vous parcourez le code (F10, F11), les PerfTips affichent la durée d'exécution de l'application, de l'opération d'étape précédente à l'étape actuelle.
Vous pouvez utiliser PerfTips pour examiner le temps nécessaire à l’exécution d’un bloc de code ou du temps nécessaire à l’exécution d’une fonction unique.
Les informations de PerfTips affichent les mêmes événements que ceux qui s’affichent également dans la vue Événements des outils de diagnostic. Dans la vue Événements, vous pouvez voir les différents événements qui se produisent pendant le débogage, comme la définition d’un point d’arrêt ou une exécution pas à pas du code.
Note
Si vous avez Visual Studio Enterprise, vous pouvez également voir Événements IntelliTrace dans cet onglet.
Analyser le code asynchrone (.NET)
L’outil asynchrone .NET vous permet d’analyser les performances du code asynchrone dans votre application. Cet outil est disponible dans le Profileur de performances. Ouvrez le Profileur de performances en choisissant Déboguer>Profileur de performances (ou Alt + F2).
L’outil affiche chaque opération asynchrone dans un affichage de liste. Vous pouvez voir des informations telles que l’heure de début, l’heure de fin et le temps total d’une opération asynchrone.
Cet outil est pris en charge pour les applications .NET Core et .NET 5+.
Analyser le code asynchrone (.NET)
L’outil asynchrone .NET vous permet d’analyser les performances du code asynchrone dans votre application. Cet outil est disponible dans le Profileur de performances. Ouvrez le Profileur de performances en choisissant Déboguer>Profileur de performances (ou Alt + F2).
L’outil affiche chaque opération asynchrone dans un affichage de liste. Vous pouvez voir des informations telles que l’heure de début, l’heure de fin et le temps total d’une opération asynchrone.
Cet outil est pris en charge pour les applications .NET Core et .NET 5+.
Analyser les performances de la base de données (.NET)
Pour les applications .NET Core et .NET 5+ qui utilisent ADO.NET ou Entity Framework Core, l’outil de base de données vous permet d’enregistrer les requêtes de base de données effectuées par votre application pendant une session de diagnostic. Vous pouvez ensuite analyser des informations sur les requêtes individuelles afin de trouver des emplacements où les performances de votre application peuvent être améliorées. Cet outil est disponible dans le Profileur de performances. Ouvrez le Profileur de performances en choisissant Déboguer>Profileur de performances (ou Alt + F2).
L’outil affiche chaque requête dans un affichage de liste. Vous pouvez voir des informations telles que l’heure de début et la durée de la requête.
Visualiser les compteurs .NET (.NET)
À compter de Visual Studio 2019 version 16.7, vous pouvez utiliser l’outil compteurs .NET dans Visual Studio pour visualiser les compteurs de performances. Vous pouvez visualiser les compteurs créés avec dotnet-counters. Les compteurs dotnet prennent en charge de nombreux compteurs, comme l’utilisation du processeur et la taille du tas du récupérateur de mémoire.
L’outil affiche des valeurs actives pour chaque compteur dans un affichage de liste.
Cet outil est pris en charge pour les applications .NET Core et .NET 5+.
Examiner les événements de l'application
La visionneuse d’événements générique vous permet d’afficher l’activité de votre application via une liste d’événements, tels que le chargement de module, le démarrage de thread et les configurations système, pour mieux diagnostiquer l’exécution de votre application directement dans le profileur Visual Studio. Cet outil est disponible dans le Profileur de performances. Ouvrez le Profileur de performances en choisissant Déboguer>Profileur de performances (ou Alt + F2).
L’outil affiche chaque événement dans un affichage de liste. Les colonnes fournissent des informations sur chaque événement, telles que le nom de l’événement, l’horodatage et l’ID de processus.
Afficher les événements personnalisés dans les graphiques de chronologie
Vous pouvez créer programmatiquement des événements personnalisés qui apparaissent en tant qu’icônes dans les graphiques de chronologie, tels que l’utilisation du processeur et les graphiques de chronologie de l’utilisation de la mémoire. Pour plus d’informations, consultez Ajouter des marques utilisateur à la chronologie.
Analyser la consommation de ressources (XAML)
Dans les applications XAML, telles que les applications WPF de bureau Windows et les applications UWP, vous pouvez analyser la consommation des ressources à l’aide de l’outil Chronologie des applications. Par exemple, vous pouvez analyser le temps passé par votre application en préparant des trames d’interface utilisateur (disposition et rendu), maintenance des demandes de réseau et de disque, et dans des scénarios tels que le démarrage de l’application, le chargement de page et le redimensionnement de fenêtre. Pour utiliser l’outil, choisissez Chronologie de l’application dans le Profileur de performances, puis choisissez Démarrer. Dans votre application, parcourez le scénario avec un problème de consommation de ressources soupçonné, puis choisissez Arrêter la collecte pour générer le rapport.
Les faibles fréquences d'images dans le graphique de débit visuel peuvent correspondre aux problèmes visuels que vous observez lors de l'exécution de votre application. De même, des nombres élevés dans le graphique d'utilisation des threads de l'interface utilisateur peuvent également correspondre à des problèmes de réactivité de l’interface utilisateur. Dans le rapport, vous pouvez sélectionner une période avec un problème de performances soupçonné, puis examiner les activités détaillées du thread d’interface utilisateur dans l’affichage Détails de la chronologie (volet inférieur).
Dans la vue Détails de la chronologie, vous pouvez trouver des informations telles que le type d’activité (ou l’élément d’interface utilisateur impliqué) ainsi que la durée de l’activité. Par exemple, dans l’illustration, un événement Layout pour un contrôle Grid prend 57,53 ms.
Pour plus d’informations, consultez Chronologie de l’application.
Examiner les événements de performances et d’accessibilité de l’interface utilisateur (UWP)
Dans vos applications UWP, vous pouvez activer Analyse de l’IU dans la fenêtre Outils de diagnostic. L’outil recherche les problèmes courants de performances ou d’accessibilité et les affiche dans la vue Événements pendant le débogage. Les descriptions d’événements fournissent des informations qui peuvent aider à résoudre les problèmes.
Analyser l’utilisation du GPU (Direct3D)
Dans les applications Direct3D (les composants Direct3D doivent être en C++), vous pouvez examiner l’activité sur le GPU et analyser les problèmes de performances. Pour plus d’informations, consultez utilisation du GPU. Pour utiliser l’outil, choisissez Usage du GPU dans l'outil de profilage des performances, puis Démarrer. Dans votre application, suivez le scénario que vous souhaitez profiler, puis choisissez Arrêter la collecte pour générer un rapport.
Lorsque vous sélectionnez une période dans les graphiques et choisissez afficher les détails, une vue détaillée apparaît dans le volet inférieur. Dans la vue détaillée, vous pouvez examiner la quantité d’activité qui se produit sur chaque PROCESSEUR et GPU. Sélectionnez les événements dans le volet le plus bas pour obtenir des fenêtres contextuelles dans la chronologie. Par exemple, sélectionnez l’événement Présenter pour afficher les fenêtres contextuelles des appels Présenter. (Les lignes VSync verticales gris clair peuvent être utilisées comme référence pour comprendre si certains appels Present ont raté le VSync. Il doit y avoir un appel Present entre chaque paire de VSyncs afin que l'application atteigne régulièrement 60 FPS.)
Vous pouvez également utiliser les graphiques pour déterminer s’il existe des goulots d’étranglement liés au processeur ou aux performances liées au GPU.
Analyser les performances (outils hérités)
Dans Visual Studio 2019, l’Explorateur de performances hérité et les outils de profilage associés, comme l’Assistant Performances, ont été intégrés au Profileur de performances, que vous pouvez ouvrir avec Débogage>Profileur de performances. Dans le Profileur de performances, les outils de diagnostic disponibles dépendent de la cible choisie et du projet de démarrage actif et ouvert. L’outil Utilisation du processeur fournit la capacité d'échantillonnage précédemment prise en charge dans l’Assistant de Performance. L’outil Instrumentation fournit la fonctionnalité de profilage instrumenté (pour des nombres et des durées d’appels précis) qui se trouvait dans l’Assistant Performances. Des outils de mémoire supplémentaires apparaissent également dans le Profileur de performances.