Conseils et astuces sur les performances dans Visual Studio

Les recommandations pour améliorer les performances de Visual Studio concernent les cas où la mémoire est insuffisante, ce qui se produit rarement. Dans ces situations, vous pouvez optimiser certaines fonctionnalités de Visual Studio que vous n’utilisez peut-être pas. Les conseils suivants ne sont pas à interpréter comme des suggestions générales.

Notes

Si vous rencontrez des difficultés à utiliser le produit en raison de problèmes de mémoire, faites-le nous savoir via l’outil de commentaires.

Utiliser un système d’exploitation 64 bits

Si vous mettez à niveau votre système d’une version 32 bits de Windows vers une version 64 bits, vous passez de 2 Go à 4 Go la quantité de mémoire virtuelle disponible pour Visual Studio. Une mise à niveau du système d’exploitation 64 bits permet à Visual Studio de gérer des charges de travail plus volumineuses.

Pour plus d’informations, consultez Limites de mémoire pour les versions de Windows et Windows Server.

Conseil

Visual Studio 2022 sur Windows est une application de 64 bits. Les versions antérieures sont de 32 bits.

Désactiver la restauration automatique de fichiers

Visual Studio rouvre automatiquement les documents qui ont été laissés ouverts dans la session précédente. Cette action de restauration automatique de fichiers peut prolonger la durée nécessaire au chargement d’une solution de 30 % ou plus, en fonction du type de projet et des documents en cours d’ouverture. Des concepteurs tels que Windows Forms et XAML, ainsi que certains fichiers JavaScript et TypeScript, peuvent être lents à ouvrir.

Visual Studio affiche un avertissement dans une barre jaune quand la restauration automatique de documents ralentit le chargement d’une solution. Vous pouvez désactiver la réouverture automatique des fichiers en effectuant les étapes suivantes :

  1. Sélectionnez Outils>Options pour ouvrir la boîte de dialogue Options.

  2. Dans la page Projets et solutions>Général, désactivez l’option Rouvrir les documents au chargement de la solution.

Si vous désactivez la restauration automatique de fichiers, vous pouvez accéder rapidement aux fichiers à ouvrir, à l’aide de l’une des commandes Atteindre :

  • Pour la fonctionnalité Atteindre générale, sélectionnez Edition>Atteindre>Atteindre tout, ou appuyez sur Ctrl+T.

  • Pour accéder à l’emplacement de la dernière modification d’une solution, sélectionnez Edition>Atteindre>Accéder à l’emplacement de la dernière modification ou appuyez sur Ctrl+Maj+Ret. arr.

  • Utilisez Aller au fichier récent pour afficher la liste des derniers fichiers ouverts dans une solution. Sélectionnez Edition>Atteindre>Aller au fichier récent, ou appuyez sur Ctrl+1, Ctrl+R.

Configurer les options de débogage

En règle générale, si vous manquez de mémoire pendant le débogage des sessions, vous pouvez optimiser le niveau de performance en modifiant un peu la configuration.

  • Activer Uniquement mon code

    L’optimisation la plus simple consiste à activer la fonctionnalité Uniquement mon code, qui charge uniquement des symboles pour votre projet. L’activation de cette fonctionnalité peut contribuer à économiser considérablement la mémoire pour le débogage des applications managées (.NET). Cette option est déjà activée par défaut dans certains types de projets.

    Pour activer Uniquement mon code, choisissez Outils>Options>Débogage>Général, puis sélectionnez Activer Uniquement mon code.

  • Spécifier les symboles à charger

    Pour le débogage natif, le chargement des fichiers de symboles (.pdb) consomme beaucoup de ressources mémoire. Vous pouvez configurer les paramètres de symboles de votre débogueur pour économiser la mémoire. En règle générale, vous configurez la solution pour charger uniquement les modules de votre projet.

    Pour spécifier le chargement des symboles, choisissez Outils>Options>Débogage>Symboles.

    Définissez les options sur Uniquement les modules spécifiés au lieu de Tous les modules, puis spécifiez les modules que vous voulez charger. Pendant le débogage, vous pouvez également cliquer avec le bouton droit sur des modules spécifiques dans la fenêtre Modules pour inclure explicitement un module dans le chargement de symboles. (Pour ouvrir la fenêtre pendant le débogage, choisissez Déboguer>Fenêtres>Modules.)

    Pour plus d’informations, consultez Spécifier les fichiers de symboles et les fichiers sources dans le débogueur.

  • Désactiver les outils de diagnostic

    Nous vous recommandons de désactiver le profilage de l’UC après utilisation. Cette fonctionnalité peut consommer de grandes quantités de ressources. Une fois que le profilage de l’UC est activé, cet état est conservé dans les sessions de débogage suivantes, il est donc recommandé de le désactiver explicitement une fois terminé. Vous pouvez économiser des ressources en désactivant les outils de diagnostic pendant le débogage si vous n’avez pas besoin des fonctionnalités fournies.

    Pour désactiver les Outils de diagnostic, démarrez une session de débogage, sélectionnezOutils>Options>Débogage>Général, puis désélectionnez l’option Activer les outils de diagnostic pendant le débogage.

    Pour plus d’informations, consultez Outils de profilage.

Désactiver des outils et des extensions

Certains outils ou extensions peuvent être désactivés pour améliorer les performances.

Conseil

Vous pouvez souvent isoler les problèmes de performances en désactivant une par une les extensions et en revérifiant les performances.

Service de langage géré (Roslyn)

Pour plus d’informations sur les performances de .NET Compiler Platform (« Roslyn »), consultez Performance considerations for large solutions.

  • Désactiver CodeLens

    Visual Studio effectue une tâche Rechercher toutes les références sur chaque méthode qui s’affiche. CodeLens fournit des fonctionnalités comme l’affichage en ligne du nombre de références. Le travail est exécuté dans un processus distinct, tel que ServiceHub.RoslynCodeAnalysisService32. Dans les solutions volumineuses ou sur des systèmes limités en ressources, cette fonctionnalité peut avoir un impact significatif sur les performances. Si vous rencontrez des problèmes de mémoire (par exemple quand vous chargez une solution volumineuse sur un ordinateur de 4 Go) ou si ce processus utilise l’UC de manière intensive, vous pouvez désactiver CodeLens afin de libérer des ressources.

    Pour désactiver CodeLens, choisissez Outils>Options>Éditeur de texte>Tous les langages>CodeLens et désélectionnez la fonctionnalité.

    Pour plus d'informations, consultez Rechercher les modifications du code et d'autres éléments de l'historique avec CodeLens.

Autres outils et extensions

  • Désactiver des extensions

    Les extensions sont des composants logiciels supplémentaires ajoutés à Visual Studio qui fournissent de nouvelles fonctionnalités ou étendent les fonctionnalités existantes. Les extensions peuvent souvent être une source de problèmes de ressources mémoire. Si vous rencontrez des problèmes de ressources mémoire, essayez de désactiver les extensions une par une pour connaître leur impact sur le scénario ou le flux de travail.

    Pour désactiver des extensions, accédez à Outils>Gérer les extensions et désactivez une extension particulière.

  • Désactiver le mode carte

    Le mode carte affiche les lignes de code en miniature dans la barre de défilement. Le mode carte est activé par défaut.

    Pour désactiver le mode carte, accédez à Outils>Options>Éditeur de texte>Tous les langages>Barres de défilement et, dans la section Comportement, désélectionnez l’option Utiliser le mode carte pour la barre de défilement verticale.

  • Désactiver le retour à la ligne automatique

    Le retour à la ligne automatique affiche la partie d’une longue ligne de code qui s’étend au-delà de la largeur actuelle de la fenêtre de l’éditeur de code. Le retour à la ligne automatique est activé par défaut.

    Si vous voulez désactiver le retour automatique à la ligne pour un projet sur lequel vous travaillez actuellement, accédez à Modifier>Avancé>Retour automatique à la ligne. (Vous pouvez activer/désactiver ce paramètre avec les mêmes commandes de menu.)

    Pour désactiver le retour à la ligne automatique pour tous les projets, accédez à Outils>Options>Général>Éditeur de texte>Tous les langages>Général et, dans la section Paramètres, désélectionnez l’option Retour à la ligne automatique.

  • Désactiver le concepteur XAML

    Le concepteur XAML est activé par défaut, mais consomme des ressources seulement si vous ouvrez un fichier .xaml. Si vous utilisez des fichiers XAML, mais ne voulez pas utiliser les fonctionnalités du concepteur, désactivez cette fonctionnalité pour libérer de la mémoire.

    Pour désactiver le Concepteur XAML, accédez à Outils>Options>Concepteur XAML>Activer le Concepteur XAML et désélectionnez l’option.

  • Supprimer des charges de travail

    Vous pouvez utiliser Visual Studio Installer pour supprimer des charges de travail qui ne sont plus utilisées. Cette action permet de rationaliser le coût du démarrage et de l’exécution en ignorant les packages et les assemblys qui ne sont plus nécessaires.

  • Ajouter des fichiers non suivis au fichier .gitignore local

    Visual Studio exécute la commande Git git status avec des fichiers non suivis pour fluidifier l’expérience quand vous ajoutez de nouveaux fichiers à un dépôt. Quand il existe un grand nombre de fichiers non suivis, git status peut consommer de la mémoire supplémentaire. Pour ignorer ces fichiers et améliorer les performances de git status, vous pouvez ajouter ces fichiers ou dossiers à votre fichier .gitignore local. Pour accéder au fichier, accédez à Git>Paramètres>Paramètres de dépôt Git. Ensuite, dans la section Fichiers Git, sélectionnez Ajouter pour créer un fichier .gitignore ou sélectionnezModifier si vous en avez déjà un.

  • Activer le graphe de commit dans les outils Git

    Nouveau dans Visual Studio 2022 version 17.2 : si vous constatez un décalage quand vous consultez votre historique de branche ou de dépôt Git dans Visual Studio, nous avons intégré une fonctionnalité de « graphe de commit » qui peut vous aider. Pour utiliser le graphe de commit, veillez à télécharger et installer Visual Studio 2022. Pour en savoir plus sur le graphe de commit, consultez le billet de blog Supercharge your Git experience in Visual Studio.

Forcer une opération de garbage collection

Le CLR utilise un système de gestion de mémoire garbage collection. Dans ce système, la mémoire est parfois utilisée par des objets qui ne sont plus nécessaires. Cet état est temporaire. Le récupérateur de mémoire libère cette mémoire en fonction de ses méthodes heuristiques en matière d’utilisation des ressources et de performances. Vous pouvez obliger le CLR à collecter la mémoire inutilisée à l’aide d’un raccourci clavier dans Visual Studio. Si une quantité importante de mémoire est en attente de nettoyage et que vous forcez une garbage collection, vous devez voir chuter l’utilisation de la mémoire par le processus devenv.exe dans le Gestionnaire des tâches. Cette méthode est rarement nécessaire. Toutefois, quand une opération ayant consommé beaucoup de ressources se termine (par exemple, une génération complète, une session de débogage ou un événement d’ouverture de solution), elle peut vous aider à déterminer la quantité de mémoire qui est réellement utilisée par le processus. Parce que Visual Studio est mixte (à la fois managé et natif), il est parfois possible que l’allocateur natif et le récupérateur de mémoire entrent en concurrence pour utiliser des ressources mémoire limitées. Dans les situations d’utilisation importante de la mémoire, il peut être utile de forcer l’exécution du récupérateur de mémoire.

Pour forcer une garbage collection, utilisez ce raccourci : Ctrl+Alt+Maj+F12, Ctrl+Alt+Maj+F12 (appuyez dessus deux fois).

Si le forçage de garbage collection permet à votre scénario de fonctionner de manière fiable, envoyez un rapport à travers l’outil de commentaires de Visual Studio, car ce comportement est susceptible d’être un bogue.

Pour obtenir une description détaillée du récupérateur de mémoire CLR, consultez Concepts fondamentaux de l’opération de garbage collection.