Quel outil de performance devrais-je utiliser ? (C#, Visual Basic, C++, F#)

Visual Studio propose des outils de profilage pour vous aider à diagnostiquer différents types de problèmes de performances d’application en fonction de votre type d’application. Dans cet article, nous fournissons des informations permettant de trouver l’outil approprié pour votre scénario et votre type d’application.

Pour une approche générale de l’optimisation du code à l’aide des outils de profilage, consultez le Guide du débutant pour optimiser le code.

Quel outil dois-je utiliser ?

Le tableau suivant répertorie les différents outils offerts par Visual Studio et fournit des scénarios courants pour choisir l’outil.

Outil d’analyse des performances Description Quand utiliser l’outil ?
Utilisation du processeur Indique où le processeur consacre du temps. • Commencez une enquête sur les problèmes généraux de performance.
• Examinez l’utilisation élevée du processeur du serveur.
• Examinez les scénarios DevOps, par exemple quand les commandes ne passent pas dans le site web de vente au détail.
• Optimisez l’utilisation du processeur.
• Examinez la latence dans les appels d’API.
Graphe de flamme Affichez dans l’outil Utilisation du processeur qui fournit une autre visualisation de l’arborescence des appels. Examiner la latence dans les appels d’API
Chemin à chaud Affichez l’outil Utilisation du processeur qui montre où la plupart du temps processeur a été passé dans votre application. Examiner la latence dans les appels d’API
Utilisation de la mémoire Affiche la mémoire de votre application pour trouver des problèmes tels que les fuites de mémoire. • Optimisez l’utilisation de la mémoire
• Examiner le gel de l’interface utilisateur
• Examiner les fuites de mémoire suspectées (code natif)
Allocation d’objets .NET Indique où les objets .NET sont alloués et donne des informations sur le nettoyage de la mémoire. • Optimiser l’utilisation de la mémoire .NET
• Analyser le nettoyage de la mémoire
Instrumentation Affiche les nombres d’appels exacts et les heures d’appel. Vous avez besoin d’un outil comme l’utilisation du processeur, mais vous souhaitez obtenir le nombre exact d’appels et des résultats basés sur le temps horloge. Cet outil nécessite une surcharge supplémentaire.
E/S de fichier Affiche vos opérations d’E/S de fichier, la durée et la quantité de données qu’elles traitent. Examiner le gel de l’interface utilisateur
Conseils sur les performances Affiche une mesure rapide des informations de performances lors de l’interaction avec votre code. Lors du débogage, vous souhaitez voir le temps écoulé entre l’opération d’étape précédente (ou point d’arrêt) et l’étape ou le point d’arrêt actuel.
Visionneuse d’événements Affiche les requêtes HTTP, les messages de journal et les exceptions. • Examiner la latence dans les appels d’API
• Examiner l’exécution d’une application lente sur un serveur web distant
.NET Async Affiche l’utilisation asynchrone/await dans les applications .NET. Examinez le problème de performances suspecté avec le code asynchrone.
.NET Counters Visualisation des compteurs .NET. Vous souhaitez une visualisation pour les métriques basées sur les compteurs .NET, telles que les exceptions par seconde, le nettoyage de la mémoire et l’utilisation du processeur.
Sauvegarde de la base de données Affiche les performances de vos requêtes de base de données. Examinez les performances des requêtes de base de données qui utilisent ADO.NET ou Entity Framework Core.
Utilisation du GPU Affiche l’utilisation matérielle de haut niveau de votre application Direct3D. Vérifiez si les performances de votre application sont liées au processeur ou au GPU.
Chronologie de l'application Affiche les performances de l’interface utilisateur pour les applications XAML. Examinez les performances de l’interface utilisateur dans les applications XAML, telles que le temps consacré au rendu des images.
IntelliTrace Outil de débogueur qui vous permet d’enregistrer des événements et d’examiner l’état de votre application à différents points d’exécution. Vous souhaitez qu’un outil examine l’état de l’application à différents points, pas seulement l’état actuel de l’application.

Quels outils sont pris en charge pour mon projet ?

Le tableau suivant répertorie les différents outils proposés par Visual Studio, ainsi que les différents types de projet avec lesquels vous pouvez les utiliser :

Outil d’analyse des performances .NET C/C++ UWP ASP.NET/ASP.NET Core
Utilisation du processeur Oui oui oui Oui
Utilisation de la mémoire Oui oui oui Oui
Allocation d’objets .NET Oui non oui Oui
Instrumentation Oui oui oui Oui
E/S de fichier Oui oui oui Oui
Conseils sur les performances Oui oui oui Oui
Visionneuse d’événements Oui oui oui Oui
.NET Async Oui non oui Oui
.NET Counters oui (.NET Core/5+ uniquement) non non oui (ASP.NET Core uniquement)
Sauvegarde de la base de données oui (.NET Core/5+ uniquement) non non oui (ASP.NET Core uniquement)
Utilisation du GPU Oui oui oui Non
Chronologie de l'application oui (XAML) non Oui Non
Explorateur de performances non non non Non
IntelliTrace .NET avec Visual Studio Enterprise uniquement non .NET avec Visual Studio Enterprise uniquement .NET avec Visual Studio Enterprise uniquement

Les outils suivants sont pris en charge avec Linux en tant que plateforme cible et avec Windows :

  • Utilisation du processeur
  • Suivi d’allocation d’objets .NET
  • .NET Async
  • .NET Counters
  • Observateur d’événements
  • Base de données

Apprendre à utiliser les profileurs

Les articles et billets de blog suivants fournissent plus d’informations pour vous aider à apprendre à utiliser efficacement les outils de performances Visual Studio.