Visite guidée des fonctionnalités de profilageProfiling Feature Tour

Visual Studio propose des outils de profilage pour vous aider à diagnostiquer différents types de problèmes de performances en fonction de votre type d’application.Visual Studio provides a variety of profiling tools to help you diagnose different kinds of performance issues depending on your app type.

Les outils de profilage auxquels vous avez accès pendant une session de débogage sont disponibles dans la fenêtre Outils de diagnostic.The profiling tools that you can access during a debugging session are available in the Diagnostic Tools window. Cette fenêtre apparaît automatiquement, sauf si vous l’avez désactivée.The Diagnostic Tools window appears automatically unless you have turned it off. Pour afficher la fenêtre, cliquez sur Déboguer / Fenêtres / Afficher les outils de diagnostic.To bring up the window, click Debug / Windows / Show Diagnostic Tools. Une fois la fenêtre ouverte, vous pouvez sélectionner les outils dont vous souhaitez collecter les données.With the window open, you can select tools for which you want to collect data.

Fenêtre Outils de diagnosticDiagnostic Tools window

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 vous pouvez voir des événements indiquant des informations sur les performances.While you are debugging, you can use the Diagnostic Tools window to analyze CPU and memory usage, and you can view events that show performance-related information.

Vue Résumé des outils de diagnosticDiagnostic Tools Summary view

La fenêtre Outils de diagnostic est souvent la meilleure méthode pour profiler des applications, mais pour les versions de mise en production (Release), vous pouvez également effectuer une analyse post-mortem de votre application à la place.The Diagnostic Tools window is often the preferred way to profile apps, but for Release builds you can also do a post-mortem analysis of your app instead. Pour plus d’informations sur les différentes approches, consultez Exécution des outils de profilage avec ou sans le débogueur.If you want more information on different approaches, see Running Profiling Tools With or Without the Debugger. Pour connaître la prise en charge des outils de profilage pour différents types d’applications, consultez Quel outil utiliser ?.To see profiling tool support for different app types, see Which tool should I use?.

Analyser l'utilisation de l'UCAnalyze CPU Usage

L’outil Utilisation de l’UC est un bon point de départ pour analyser les performances de votre application.The CPU Usage tool is a good place to start analyzing your app's performance. Il vous en dit plus sur les ressources du processeur qu’utilise votre application.It will tell you more about CPU resources that your app is consuming. Pour obtenir une description plus détaillée de l’outil Utilisation de l’UC, consultez Guide du débutant en profilage des performances.For a more detailed walkthrough of the CPU Usage tool, see Beginner's Guide to Performance Profiling.

Dans la vue Résumé des outils de diagnostic, choisissez Activer le profilage de l’UC (vous devez être dans une session de débogage).From the Summary view of the Diagnostic Tools, choose Enable CPU Profiling (you must be in a debugging session).

Activer l’utilisation de l’UC dans les Outils de diagnosticEnable CPU usage in the Diagnostic Tools

Pour utiliser l’outil plus efficacement, définissez deux points d’arrêt dans votre code, un au début et un à la fin de la fonction ou de la région de code que vous souhaitez analyser.To use the tool most effectively, set two breakpoints in your code, one at the beginning and one at the end of the function or the region of code you want to analyze. Examinez les données de profilage quand une pause est marquée au second point d’arrêt.Examine the profiling data when you are paused at the second breakpoint.

La vue Utilisation de l’UC affiche une liste de fonctions, classées par durée d’exécution décroissante.The CPU Usage view shows you a list of functions ordered by longest running, with the longest running function at the top. Cette liste vous permet de repérer les fonctions dans lesquelles se produisent des goulots d’étranglement.This can help guide you to functions where performance bottlenecks are happening.

Vue Utilisation de l’UC dans les Outils de diagnosticDiagnostic Tools CPU Usage view

Double-cliquez sur une fonction digne d’intérêt ; apparaît alors une vue « papillon » plus détaillée composée de trois volets, indiquant la fonction sélectionnée (au milieu), la fonction appelante (à gauche) et les fonctions appelées (à droite).Double-click on a function that you are interested in, and you will see a more detailed three-pane "butterfly" view, with the selected function in the middle of the window, the calling function on the left, and called functions on the right. 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.The Function Body section shows the total amount of time (and the percentage of time) spent in the function body excluding time spent in calling and called functions. Ces données peuvent vous aider à déterminer si la fonction elle-même est un goulot d’étranglement.This data can help you evaluate whether the function itself is a performance bottleneck.

Vue « papillon » fonctions appelantes/fonctions appelées dans les Outils de diagnosticDiagnostic Tools caller callee "butterfly" view

Analyser l’utilisation de la mémoireAnalyze Memory Usage

La fenêtre Outils de diagnostic vous permet également d’évaluer l’utilisation de la mémoire dans votre application.The Diagnostic Tools window also allows you to evaluate memory usage in your app. Par exemple, vous pouvez consulter le nombre et la taille des objets sur le tas.For example, you can look at the number and size of objects on the heap. Vous trouverez des instructions plus détaillées pour analyser la mémoire sur la page Analyser l’utilisation de la mémoire.For more detailed instructions to analyze memory, see Analyze Memory Usage.

Pour analyser l’utilisation de la mémoire, vous devez prendre au moins un instantané de la mémoire pendant le débogage.To analyze memory usage, you need to take at least one memory snapshot while you are debugging. 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 suspecté et le second juste après.Often, the best way to analyze memory is to take two snapshots; the first right before a suspected memory issue, and the second snapshot right after a suspected memory issue occurs. Ensuite, vous pouvez visualiser une comparaison des deux instantanés et voir exactement ce qui a changé.Then you can view a diff of the two snapshots and see exactly what changed.

Prendre un instantané dans les Outils de diagnosticTake a snapshot in the Diagnostic Tools

Quand vous sélectionnez un des liens associés à une flèche, vous obtenez une vue différentielle du tas (une flèche rouge vers le haut Augmentation de l’utilisation de la mémoire indique un nombre d’objets croissant (à gauche) ou une taille de tas croissante (à droite)).When you select one of the arrow links, you are given a differential view of the heap (a red up arrow Memory Usage Increase shows an increasing object count (left) or an increasing heap size (right)). 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.If you click the right link, you get a differential heap view ordered by objects that increased the most in heap size. Cela peut vous aider à identifier les problèmes de mémoire.This can help you pinpoint memory problems. Par exemple, dans l’illustration ci-dessous, les octets utilisés par les objets ClassHandlersStore ont augmenté de 3 492 unités dans le deuxième instantané.For example, in the illustration below, the bytes used by ClassHandlersStore objects increased by 3,492 bytes in the second snapshot.

Vue comparative du tas dans les Outils de diagnosticDiagnostic Tools heap diff view

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).If you click the link on the left instead in the Memory Usage view, the heap view is organized by object count; the objects of a particular type that increased the most in number are shown at the top (sorted by Count Diff column).

Examiner les événements de performanceExamine Performance Events

La vue Événements dans les Outils de diagnostic vous présente les différents événements qui se produisent pendant le débogage, tels que la définition d’un point d’arrêt ou une exécution pas à pas du code.The Events view in the Diagnostic Tools shows you different events that occur while you are debugging, such as the setting of a breakpoint or a code stepping operation. Vous pouvez consulter des informations telles que la durée de l’événement (mesurée à partir de la dernière suspension du débogueur ou du démarrage de l’application).You can check information such as the duration of the event (measured from when the debugger was last paused, or when the app started). Par exemple, si vous parcourez le code pas à pas (F10, F11), la vue Événements vous indique la durée d’exécution de l’application entre l’étape précédente et l’étape actuelle.For example, if you step through code (F10, F11), the Events view shows you the app runtime duration from the previous step operation to the current step.

Vue Événements dans les Outils de diagnosticDiagnostic Tools Events view

Note

Si vous avez Visual Studio Enterprise, vous pouvez également voir Événements IntelliTrace sous cet onglet.If you have Visual Studio Enterprise, you can also see IntelliTrace events in this tab.

Les mêmes événements s’affichent aussi dans l’éditeur de code, sous la forme de conseils sur les performances.The same events also show up in the code editor, which you can view as PerfTips.

Conseils sur les performances dans la visite guidée du profilageProfiling Tour PerfTips

Examiner les événements d’accessibilité et de performance de l’interface utilisateur (UWP)Examine UI Performance and Accessibility Events (UWP)

Dans vos applications UWP, vous pouvez activer Analyse de l’IU dans la fenêtre Outils de diagnostic.In your UWP apps, you can enable UI Analysis in the Diagnostic Tools window. L’outil recherche les problèmes de performances ou d’accessibilité et les affiche dans la vue Événements pendant le débogage.The tool searches for common performance or accessibility issues and displays them in the Events view while you are debugging. Les descriptions des événements fournissent des informations qui peuvent aider à résoudre les problèmes.The event descriptions provide information that can help resolve issues.

Afficher les événements d’analyse de l’IU dans les Outils de diagnosticView UI Analysis events in the Diagnostic Tools

Profiler les versions Release sans le débogueurProfile Release Builds without the Debugger

Vous pouvez utiliser les outils de profilage, tels que l’utilisation de l’UC et l’utilisation de la mémoire, avec le débogueur (voir les sections précédentes), ou vous pouvez les exécuter à l’aide du profileur de performances, qui vise à fournir une analyse des versions Release.Profiling tools like CPU Usage and Memory Usage can be used with the debugger (see earlier sections), or you can run profiling tools using the Performance Profiler, which is intended to provide analysis for Release builds. Dans le profileur de performances, vous pouvez collecter des informations de diagnostic pendant l’exécution de l’application, puis examiner ces informations après l’arrêt de l’application.In the Performance Profiler, you can collect diagnostic info while the app is running, and then examine the collected information after the app is stopped. Pour plus d’informations sur les différentes approches, consultez Exécution des outils de profilage avec ou sans le débogueur.For more information on these different approaches, see Running Profiling Tools With or Without the Debugger.

Profileur de performancesPerformance Profiler

Ouvrez le profileur de performances en choisissant Déboguer/Profileur de performances.Open the Performance Profiler by choosing Debug / Performance Profiler.

La fenêtre vous permet de sélectionner plusieurs outils de profilage dans certains scénarios.The window will allow you to select multiple profiling tools in some scenarios. Les outils comme Utilisation de l’UC peuvent fournir des données complémentaires que vous pouvez utiliser dans votre analyse.Tools such as CPU Usage may provide complementary data that you can use to help in your analysis.

Analyser la consommation des ressources (XAML)Analyze Resource Consumption (XAML)

Dans les applications XAML, comme les applications WPF pour poste de travail Windows et les applications UWP, vous pouvez analyser la consommation des ressources avec l’outil Chronologie de l’application.In XAML apps, such as Windows desktop WPF apps and UWP apps, you can analyze resource consumption using the Application Timeline tool. Par exemple, vous pouvez analyser le temps passé par votre application à préparer les trames de l’interface utilisateur (mise en page et rendu), à traiter les demandes du réseau et des disques, et dans les scénarios comme le démarrage de l’application, le chargement des pages et le redimensionnement des fenêtres.For example, you can analyze the time spent by your application preparing UI frames (layout and render), servicing network and disk requests, and in scenarios like application startup, page load, and Window resize. Pour utiliser l’outil, choisissez Chronologie de l’application dans le profileur de performances, puis choisissez Démarrer.To use the tool, choose Application Timeline in the Performance Profiler, and then choose Start. Dans votre application, effectuez le scénario susceptible de présenter un problème de consommation de ressources, puis choisissez Arrêter la collecte pour générer le rapport.In your app, go through the scenario with a suspected resource consumption issue, and then choose Stop collection to generate the report.

La présence de taux de trames faibles dans le graphique Débit visuel peut correspondre à des problèmes visuels que vous constatez quand vous exécutez votre application.Low framerates in the Visual throughput graph may correspond to visual problems that you see when running your app. De même, la présence de nombres élevés dans le graphique Utilisation du thread d’interface utilisateur peut également indiquer des problèmes de réactivité de l’interface utilisateur.Similarly, high numbers in the UI thread utilization graph may also correspond to UI responsiveness issues. Dans le rapport, vous pouvez sélectionner une période de temps susceptible de présenter un problème de performances, puis examiner les activités de thread de l’interface utilisateur détaillées dans la vue Détails de la chronologie (volet inférieur).In the report, you can select a time period with a suspected performance issue, and then examine the detailed UI thread activities in the Timeline details view (lower pane).

Outil de profilage - Chronologie de l’applicationApplication Timeline profiling tool

La vue Détails de la chronologie comprend des informations telles que le type d’activité (ou l’élément d’interface utilisateur impliqué), ainsi que la durée de l’activité.In the Timeline details view, you can find information such as the type of activitiy (or the UI element involved) along with the duration of the activity. Par exemple, dans l’illustration, un événement Layout (disposition) pour un contrôle de grille prend 57,53 ms.For example, in the illustration, a Layout event for a Grid control takes 57.53 ms.

Pour plus d’informations, consultez Chronologie de l’application.For more information, see Application Timeline.

Analyser l’utilisation du GPU (Direct3D)Analyze GPU Usage (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.In Direct3D apps (Direct3D components must be in C++), you can examine activity on the GPU and analyze performance issues. Pour plus d’informations, consultez Utilisation du GPU.For more information, see GPU Usage. Pour utiliser l’outil, choisissez Utilisation du GPU dans le profileur de performances, puis choisissez Démarrer.To use the tool, choose GPU Usage in the Performance Profiler, and then choose Start. Dans votre application, effectuez le scénario à profiler, puis choisissez Arrêter la collecte pour générer un rapport.In your app, go through the scenario that you're interested in profiling, and then choose Stop collection to generate a report.

Quand vous sélectionnez une période de temps dans les graphiques et que vous choisissez Afficher les détails, une vue détaillée s’affiche dans le volet inférieur.When you select a time period in the graphs and choose view details, a detailed view appears in the lower pane. Dans la vue détaillée, vous pouvez consulter le volume d’activité qui se produit sur chaque UC et GPU.In the detailed view, you can examine how much activity is happening on each CPU and GPU. Sélectionnez les événements dans le volet inférieur pour afficher des fenêtres contextuelles dans la chronologie.Select events in the lowest pane to get popups in the timeline. Par exemple, sélectionnez l’événement Présent pour afficher les fenêtres contextuelles des appels Présent.For example, select the Present event to view Present call popups. (Vous pouvez utiliser les lignes Vsync verticales gris clair pour déterminer si certains appels Présent ont manqué le Vsync.(The light gray vertical Vsync lines can be used as a reference to understand whether certain Present calls missed Vsync. Il doit y avoir un appel Présent entre chaque paire de Vsyncs pour que l’application atteigne régulièrement 60 i/s.)There must be one Present call between every two Vsyncs in order for the app to steadily hit 60 FPS.)

Outil de profilage - Utilisation du GPUGPU Usage profiling tool

Vous pouvez également utiliser les graphiques pour déterminer la présence éventuelle de goulots d’étranglement liés à l’UC ou au GPU.You can also use the graphs to determine whether there are CPU bound or GPU bound performance bottlenecks.

Analyser les performances (JavaScript)Analyze Performance (JavaScript)

Pour les applications UWP, vous pouvez utiliser les outils Mémoire JavaScript et Réactivité de l’interface utilisateur HTML.For UWP apps, you can use the JavaScript Memory tool and the HTML UI Responsiveness tool.

L’outil Mémoire JavaScript est similaire à l’outil Utilisation de la mémoire disponible pour les autres types d’application.The JavaScript Memory tool is similar to the Memory Usage tool available for other app types. Vous pouvez utiliser cet outil pour comprendre l’utilisation de la mémoire et rechercher les fuites de mémoire dans votre application.You can use this tool to understand memory usage and find memory leaks in your app. Pour plus d’informations sur l’outil, consultez Mémoire JavaScript.For more details about the tool, see JavaScript Memory.

Outil de profilage - Mémoire JavaScriptJavaScript Memory profiling tool

Pour diagnostiquer la réactivité de l’interface utilisateur, la lenteur du temps de chargement et la lenteur des mises à jour visuelles dans les applications UWP, utilisez l’outil Réactivité de l’interface utilisateur HTML.To diagnose UI responsiveness, slow loading time, and slow visual updates in UWP apps, use the HTML UI Responsiveness tool. L’utilisation est similaire à l’outil Chronologie de l’application pour les autres types d’application.Usage is similar to the Application Timeline tool for other app types. Pour plus d’informations, consultez Réactivité de l’interface utilisateur HTML.For more information, see HTML UI responsiveness.

Outil de profilage - Réactivité de l’interface utilisateur HTMLHTML UI Responsiveness profiling tool

Analyser l’utilisation du réseau (UWP)Analyze Network Usage (UWP)

Dans les applications UWP, vous pouvez analyser les opérations réseau exécutées par le biais de l’API Windows.Web.Http. Cet outil peut vous aider à résoudre des problèmes tels que les problèmes d’accès et d’authentification, l’utilisation incorrecte du cache et les mauvaises performances d’affichage et de téléchargement.In UWP apps, you can analyze network operations performed using the Windows.Web.Http API.This tool may help you to resolve issues like access and authentication problems, incorrect cache-use, and poor display and download performance. Pour utiliser l’outil, choisissez Réseau dans le profileur de performances, puis choisissez Démarrer.To use the tool, choose Network in the Performance Profiler, and then choose Start. Dans votre application, effectuez le scénario qui utilise Windows.Web.Http, puis choisissez Arrêter la collecte pour générer le rapport.In your app, go through the scenario that uses Windows.Web.Http, and then choose Stop collection to generate the report.

Outil de profilage - Utilisation du réseauNetwork Usage profiling tool

Sélectionnez une opération dans la vue du résumé pour afficher des informations plus détaillées.Select an operation in the summary view to view more details.

Informations détaillées dans l’outil Utilisation du réseauDetailed information in the Network Usage tool

Pour plus d’informations, consultez Utilisation du réseau.For more information, see Network Usage.

Analyser les performances (outils hérités)Analyze Performance (Legacy Tools)

Si vous avez besoin de fonctionnalités qui ne sont pas présentes dans les outils Utilisation de l’UC ou Utilisation de la mémoire, telles que l’instrumentation, et que vous exécutez des applications de bureau ou ASP.NET, vous pouvez utiliser l’Explorateur de performances pour le profilage.If you need features such as instrumentation that are not currently present in CPU Usage or Memory Usage tools, and you are running desktop or ASP.NET apps, you can use the Performance Explorer for profiling. (Non pris en charge dans les applications UWP).(Not supported in UWP apps). Pour plus d’informations, consultez Explorateur de performances.For more info, see Performance Explorer.

Outil Explorateur de performancesPerformance Explorer tool

Quel outil utiliser ?Which Tool Should I Use?

Voici un tableau qui recense les différents outils proposés par Visual Studio, ainsi que les différents types de projet avec lesquels vous pouvez les utiliser :Here is a table that lists the different tools Visual Studio offers and the different project types you can use them with:

Outil d’analyse des performancesPerformance Tool Bureau WindowsWindows desktop UWPUWP ASP.NET/ASP.NET CoreASP.NET/ASP.NET Core
Utilisation de la mémoireMemory Usage ouiyes ouiyes ouiyes
Utilisation de l'UCCPU Usage oui (voir la remarque)yes (see note) ouiyes oui (voir la remarque)yes (see note)
Utilisation du GPUGPU Usage ouiyes ouiyes nonno
Chronologie de l'applicationApplication Timeline ouiyes ouiyes Nonno
Conseils sur les performancesPerfTips ouiyes oui pour XAML, non pour HTMLyes for XAML, no for HTML ouiyes
Explorateur de performancesPerformance Explorer ouiyes Nonno ouiyes
IntelliTraceIntelliTrace .NET avec Visual Studio Enterprise uniquement.NET with Visual Studio Enterprise only .NET avec Visual Studio Enterprise uniquement.NET with Visual Studio Enterprise only .NET avec Visual Studio Enterprise uniquement.NET with Visual Studio Enterprise only
Utilisation du réseauNetwork Usage Nonno ouiyes Nonno
HTML UI responsivenessHTML UI responsiveness Nonno oui pour HTML, non pour XAMLyes for HTML, no for XAML Nonno
Mémoire JavaScriptJavaScript Memory Nonno oui pour HTML, non pour XAMLyes for HTML, no for XAML Nonno

Note

Pour .NET Core et ASP.NET Core, l’outil Utilisation de l’UC ne fournit pas de résultats précis avec les fichiers PBD portables.For .NET Core and ASP.NET Core, the CPU Usage tool currently does not provide accurate results with portable PBDs. Utilisez des fichiers PDB complets à la place.Use full PDBs instead.

Voir aussiSee Also

Débogage dans Visual StudioDebugging in Visual Studio