Procédure pas à pas : utilisation des API du générateur de profils
Mise à jour : novembre 2007
La procédure pas à pas utilise une application C# pour illustrer l'utilisation des API des outils de profilage Visual Studio Team System Developer. Vous utiliserez les API du profileur pour limiter la quantité de données collectées pendant le profilage d'instrumentation.
Les étapes dans cette procédure pas à pas s'appliquent généralement à une application C/C++. Vous devrez configurer votre environnement de génération en fonction de chaque langage.
En général, il est recommandé de commencer par analyser la performance de l'application à l'aide de l'exemple de profilage. Si celui-ci ne fournit pas les informations qui définissent un goulot d'étranglement, le profilage d'instrumentation peut fournir un niveau supérieur de détail. Le profilage d'instrumentation est très utile pour enquêter sur l'interaction de thread.
Toutefois, un niveau supérieur de détail entraîne un plus grand nombre de données rassemblées. Vous constaterez sans doute que le profilage d'instrumentation crée de grands fichiers de données. L'instrumentation est également plus susceptible d'avoir un impact sur la performance de l'application. Pour plus d'informations, consultez Fonctionnement des valeurs de données d'instrumentation et Fonctionnement des valeurs de données d'échantillonnage.
Le profileur Visual Studio vous permet de limiter la collecte de données. Cette procédure pas à pas illustre la façon de limiter la collecte de données en utilisant les API du profileur. Le profileur Visual Studio fournit une API pour contrôler la collecte de données depuis une application.
Pour le code natif, les API du profileur Visual Studio se trouvent dans VSPerf.dll. Le fichier d'en-tête, VSPerf.h, et la bibliothèque d'importation, VSPerf.lib, se trouvent dans le répertoire Microsoft Visual Studio 9\Team Tools\Performance Tools.
Pour un code managé, les API du profileur se trouvent dans Microsoft.VisualStudio.Profiler.dll. Cette DLL se trouve dans le répertoire Microsoft Visual Studio 9\Team Tools\Performance Tools. Pour plus d'informations, consultez Microsoft.VisualStudio.Profiler.
Composants requis
Cette procédure pas à pas présuppose que votre choix d'environnement de développement est configuré pour prendre en charge le débogage et l'échantillonnage. Les rubriques suivantes fournissent une vue d'ensemble de ces conditions préalables :
Comment : choisir des méthodes de collection
Comment : référencer les informations de symboles Windows
Par défaut, lors de son lancement, le profileur collecte des données au niveau global. Le code suivant désactive le profilage global au début du programme.
DataCollection.StopProfile(
ProfileLevel.Global,
DataCollection.CurrentId);
Vous pouvez désactiver la collecte de données à la ligne de commande sans utiliser un appel d'API. Les étapes suivantes supposent que votre environnement de génération de la ligne de commande est configuré pour exécuter les outils de profilage et vos outils de développement. Cela inclut les paramètres nécessaires pour VSInstr et VSPerfCmd. Consultez Outils de profilage de ligne de commande.
Limiter la collecte de données à l'aide des API du profileur
Pour créer le code à profiler
Créez un nouveau projet C# dans Visual Studio ou utilisez une génération de ligne de commande, selon votre préférence.
Remarque : La build doit faire référence à la bibliothèque Microsoft.VisualStudio.Profiler.dll, située dans le répertoire Microsoft Visual Studio 9\Team Tools\Performance Tools.
Copiez et collez le code suivant dans votre projet :
using System; using System.Collections.Generic; using System.Text; using Microsoft.VisualStudio.Profiler; namespace ConsoleApplication2 { class Program { public class A { private int _x; public A(int x) { _x = x; } public int DoNotProfileThis() { return _x * _x; } public int OnlyProfileThis() { return _x + _x; } public static void Main() { DataCollection.StopProfile( ProfileLevel.Global, DataCollection.CurrentId); A a; a = new A(2); int x; Console.WriteLine("2 square is {0}", a.DoNotProfileThis()); DataCollection.StartProfile( ProfileLevel.Global, DataCollection.CurrentId); x = a.OnlyProfileThis(); DataCollection.StopProfile( ProfileLevel.Global, DataCollection.CurrentId); Console.WriteLine("2 doubled is {0}", x); } } } }
Pour collecter et consulter des données dans l'IDE de Visual Studio
Ouvrez l'IDE de Visual Studio. Dans le menu Analyser, pointez sur Profileur, puis cliquez sur Nouvelle session de performance.
Ajoutez votre fichier compilé à la liste Cibles dans la fenêtre Explorateur de performances. Cliquez avec le bouton droit sur Cibles, puis cliquez sur Ajouter un fichier binaire cible. Localisez le fichier binaire dans la boîte de dialogue Ajouter un fichier binaire cible, puis cliquez sur Ouvrir.
Sélectionnez Instrumentation dans la liste Méthode de la barre d'outils de l'Explorateur de performances.
Cliquez sur Démarrer avec le profilage.
Le profileur instrumente et exécute le fichier binaire et crée un fichier de rapport de performances, qui apparaît dans le nœud Rapports de l'Explorateur de performances.
Ouvrez le fichier de rapport de performances résultant.
Par défaut, lors de son lancement, le profileur collecte des données au niveau global. Le code suivant désactive le profilage global au début du programme.
DataCollection.StopProfile(
ProfileLevel.Global,
DataCollection.CurrentId);
Pour rassembler et consulter des données à la ligne de commande
Compilez une version Debug de l'exemple de code que vous avez créée au cours de la procédure "Pour créer un code à profiler", plus haut.
Pour profiler une application managée, tapez la commande suivante pour définir les variables d'environnement appropriées :
VsPefCLREnv /traceon
Tapez la commande suivante :VSInstr <NomFichier>.exe
Tapez la commande suivante : VSPerfCmd /start:trace /output:<NomFichier>.vsp
Tapez la commande suivante :VSPerfCmd /globaloff
Exécutez votre programme.
Tapez la commande suivante :VSPerfCmd /shutdown
Tapez la commande suivante :VSPerfReport /calltrace: <NomFichier>.vsp
Un fichier .csv est créé dans le répertoire actif avec les données de performances résultantes.
Voir aussi
Référence
Microsoft.VisualStudio.Profiler
Autres ressources
Référence des API du générateur de profils Visual Studio (Native)