Analyse des données de performance pour le code Visual C++, Visual C# et Visual Basic dans les applications du Windows Store
Cette rubrique décrit les données de performance du code Visual C++, visual C# et Visual Basic qui est présenté dans les vues du rapport de l'outil de profilage Microsoft Visual Studio Express 2012 pour Windows 8. Pour collecter les données de performance Visual C++, Visual C# et Visual Basic, consultez l'une des rubriques suivantes :
Comment : profiler le code JavaScript dans les applications du Windows Store sur un ordinateur local
Dans cette rubrique
Cette rubrique contient les sections suivantes :
Ouverture du fichier du rapport de profilage
Types de données de performances
Uniquement mon code
Types de vues du rapport des performances
Vues du rapport des performances
Vue Résumé
Vue Informations relatives à la fonction
Vue Arborescence des appels
Vue Appelant/appelé
Vues Modules et Fonctions
Vue Lignes
Personnalisation des vues de la grille des données
Ouverture du fichier du rapport de profilage
Lorsque vous arrêtez l'exécution d'un profilage de l'IDE Visual Studio, les données de performance s'affichent automatiquement dans un document.
Pour ouvrir un fichier de rapport de profilage (.vspx) généré par l'outil en ligne de commande VSPerf ou qui a été enregistré après une exécution de profilage précédente, procédez comme suit :
Si nécessaire, ouvrez Visual Studio.
Dans le menu Fichier, choisissez Ouvrir un fichier.
Dans la boîte de dialogue Ouvrir un fichier, accédez au dossier contenant le fichier du rapport de profilage, puis sélectionnez le fichier du rapport.
Types de données de performances
Le profileur Visual Studio Express 2012 pour Windows 8 utilise une technique d'échantillonnage pour collecter les données de performance du code Visual C++, visual C# et Visual Basic. À un intervalle basé sur l'horloge du processeur, le profileur capture un instantané des fonctions actives -la pile des appels. Une fonction active sur la pile des appels exécute son propre code ou attend des fonctions appelées pour être exécutées. Pour chaque fonction dans la pile des appels échantillonnée, le profileur assigne des valeurs d'échantillonnage à la fonction comme suit :
Si la fonction exécute le code en interne (et non dans une fonction enfant), le nombre d'exemples Inclusif et Exclusif de la fonction est incrémenté.
Si la fonction attend une fonction enfant à retourner, seul le nombre d'exemples Inclusif de la fonction est incrémenté.
Les données de profilage pour une fonction incluent le nombre absolu d'exemples collectés pour la fonction et le pourcentage relatif de ces exemples comparé au nombre total d'exemples collectés dans l'exécution du profilage. Les données sont calculées pour deux jeux de valeurs de synchronisation :
Les valeurs Inclusif sont calculées à partir du nombre total d'exemples collectés pour une fonction lorsqu'elle est sur la pile des appels, y compris les exemples collectés lorsque des fonctions enfants sont en cours d'exécution. Lorsqu'une pile des appels échantillonnée est analysée, le nombre d'exemples inclusifs de toutes les fonctions dans la pile des appels est incrémenté.
Les valeurs Exclusif sont calculées à partir du nombre total d'exemples collectés pour une fonction lorsqu'elle exécute son propre code. Les valeurs exclusives n'incluent pas les exemples collectés lorsque la fonction enfant est en cours d'exécution. Lorsqu'une pile des appels échantillonnée est analysée, le nombre d'exemples exclusifs est incrémenté uniquement pour la fonction qui exécute le code dans la fonction elle-même.
Types de vues du rapport des performances
Les vues du rapport de profilage affichent les données de deux manières :
Les vues des graphiques des appels affichent des informations sur les fonctions dans le contexte des chemins d'exécution.
L'arborescence Chemin réactif dans la fenêtre Résumé affiche le chemin d'exécution avec le plus grand nombre d'exemples ayant la durée d'exécution du profilage la plus longue.
La vue Arborescence des appels est un graphique des appels pour tous les chemins d'exécution qui ont été échantillonnés dans l'exécution du profilage.
Les vues Informations relatives à la fonction et Appelant/appelé se concentrent sur une fonction sélectionnée, en affichant les fonctions qui ont appelé la fonction sélectionnée, et les fonctions qu'elles ont appelées.
Les vues Graphique des appels vous aident à identifier les problèmes de performances dans vos algorithmes.
Les vues des listes de fonctions affichent les données de performances relatives aux fonctions dans un tableau. Vous pouvez trier les fonctions en choisissant une colonne de données.
La liste Fonctions exigeant le plus de travail individuel sur la page Résumé répertorie les fonctions ayant le plus grand nombre d'exemples exclusifs collectés dans l'exécution du profilage.
La vue Modules regroupe les fonctions selon les fichiers .dll ou .exe qui les contiennent.
La vue Fonctions est une liste unique de fonctions.
La vue Lignes affiche les données de performance pour les instructions des fonctions qui ont été exécutées lorsqu'un échantillon a été collecté.
Naviguez entre les vues en sélectionnant une fonction et en choisissant une nouvelle vue dans la liste déroulante Affichage actuel.
Uniquement mon code
Par défaut, le profileur utilise la fonctionnalité Uniquement mon code lorsqu'il crée des rapports. Lorsque le profileur analyse les informations de la pile des appels, il détermine si une fonction sur la pile des appels est membre de votre code ou membre du code système, tel qu'une méthode dans la bibliothèque de classes de base (BCL) .NET. Lorsque la fonction Uniquement mon code est activée et que la fonction est un appel du code système, l'analyse du profileur ajoute tous les exemples suivants collectés pour la pile des appels aux valeurs inclusives et exclusives du premier appel système. Par conséquent, les appels système sont reportés dans le premier appel système, ce qui permet de se concentrer sur l'optimisation de votre propre code.
Pour modifier le comportement par défaut de la fonction Uniquement mon code et afficher tous les appels des appels système, procédez comme suit :
Dans le menu Outils, choisissez Options.
Dans la boîte de dialogue Options, choisissez Outils d'analyse des performances, puis choisissez Général.
Dans le groupe Uniquement mon code, désactivez la case à cocher Activer Uniquement mon code pour les rapports de profileur (échantillonnage).
Vues du rapport des performances
Vue Résumé
La page Résumé fournit deux vue des données de profilage qui peuvent souvent vous indiquer les meilleurs éléments pour l'optimisation des performances.
L'arborescence Chemin réactif indique la pile des appels ayant le plus grand nombre d'exemples dans l'exécution du profilage. Comprendre la raison pour laquelle cet algorithme prend autant de temps peut déboucher sur une optimisation.
La liste Fonctions exigeant le plus de travail individuel répertorie les dix fonctions qui ont utilisé le plus de temps exclusif. Vous pouvez obtenir rapidement des gains de performance significatifs en optimisant le code de fonction ou en réduisant le nombre d'appels de ces fonctions.
Pour ouvrir une vue Informations relatives à la fonction, choisissez un nom de fonction en mode Résumé.
Vue Informations relatives à la fonction
Le graphique à barres Distribution des coûts représente les relations entre une fonction que vous sélectionnez et les fonctions d'appel qui ont exécuté la fonction sélectionnée, et entre la fonction sélectionnée et les fonctions appelées par cette fonction.
La barre Fonctions d'appel affiche les fonctions qui ont appelé la fonction sélectionnée. La taille d'un bloc d'appel de fonction indique le pourcentage de la durée totale d'exécution de la fonction sélectionnée qui a été provoquée par la fonction d'appel.
La barre ///Fonction sélectionnée indique la quantité relative de la durée totale d'exécution que la fonction sélectionnée a consacré à exécuter son propre code (le bloc Corps de la fonction) et la durée passée à exécuter les fonctions appelées par la fonction sélectionnée.
La barre Fonctions appelées affiche les fonctions qui ont été appelées par la fonction sélectionnée. La taille d'un bloc de la fonction appelée indique le pourcentage de la durée totale d'exécution de la fonction appelée qui a été consacrée dans la fonction appelée.
Choisissez une fonction appelante ou appelée pour qu'elle devienne la fonction sélectionnée.
Vue Arborescence des appels
Utilisez la vue Arborescence des appels pour explorer les chemins d'exécution empruntés par votre application. La racine de l'arborescence correspond au point d'entrée de l'application. Chaque nœud de fonction répertorie toutes les fonctions appelées et les données de performance liées à ces appels de fonction. Valeurs de la fonction dans la vue Arborescence des appels pour les instances de fonction qui ont été appelées par la fonction parente dans l'arborescence des appels. Les valeurs de pourcentage représentent le rapport entre la durée de la valeur des instances de la fonction et la durée totale d'exécution de l'exécution du profilage.
Pour se concentrer sur un nœud de la vue Arborescence des appels, sélectionnez le nœud, puis choisissez Définir la racine dans le menu contextuel. En définissant le nœud racine, vous supprimez toutes les autres entrées de l'affichage, à l'exception de la sous-arborescence du nœud sélectionné. Pour restaurer le nœud d'origine du nœud racine, choisissez Réinitialiser la racine dans le menu contextuel.
Colonnes de la vue Arborescence des appels
Nom de la colonne |
Description |
---|---|
Exemples inclusifs |
Nombre d'exemples collectés pour les instances de la fonction qui ont été appelées par la fonction parente dans l'arborescence des appels. Le nombre d'exemples inclut les exemples collectés pour les fonctions appelées par la fonction. |
Exemples exclusifs |
Nombre d'exemples collectés pour les instances de la fonction qui ont été appelées par la fonction parente dans l'arborescence des appels. Le nombre d'exemples n'inclut pas les exemples collectés pour les fonctions appelées par la fonction. |
% des exemples inclusifs |
Pourcentage du nombre total d'exemples collectés dans l'exécution du profilage pour les instances de la fonction appelée par la fonction parente. La valeur inclut les exemples collectés pour les fonctions appelées par la fonction. |
% exemples exclusifs |
Pourcentage du nombre total d'exemples collectés dans l'exécution du profilage pour les instances de la fonction appelée par la fonction parente. La valeur n'inclut pas les exemples collectés pour les fonctions appelées par la fonction. |
Nom de module |
Nom du module (.dll ou .exe) contenant la fonction. |
Vue Appelant/appelé
La vue Appelant/appelé est une représentation sous forme d'arborescence des données dans le graphique à barres Distribution des coûts qui inclut tous les détails de minutage. Utilisez la vue Appelant/appelé pour analyser la relation entre une fonction sélectionnée et les fonctions qui l'ont appelée et la fonction qu'elle a appelée. La vue Appelant/appelé se compose de trois grilles.
La Fonction active de la grille centrale affiche les informations de profilage sur la fonction sélectionnée. Les valeurs incluent des exemples de tous les appels de la fonction. La vue Fonctions qui ont appelé la fonction active s'affiche dans la grille supérieure et la vue Fonctions qui ont été appelées par la fonction active s'affiche dans la grille inférieure. Les valeurs de la fonction en cours représentent les totaux de tous les appels échantillonnés de la fonction. Les valeurs des fonctions d'appel et des fonctions appelées et incluent uniquement les exemples collectés pour la fonction lorsqu'elle était appelante ou appelée par la fonction sélectionnée.
Pour parcourir les arborescences des appels d'une fonction, double-cliquez sur une fonction appelante ou appelée. Ainsi, la fonction sélectionnée devient la nouvelle fonction sélectionnée et vous indique ses appelants et fonctions appelées.
Colonnes de la vue Appelant/appelé
Nom de la colonne |
Description |
---|---|
Exemples inclusifs |
|
Exemples exclusifs |
|
% des exemples inclusifs |
|
% exemples exclusifs |
|
Vues Modules et Fonctions
Les vues Modules et Fonctions affichent les détails des données de profilage pour les fonctions du rapport de profilage. La vue Modules organise les fonctions JavaScript par fichier source .js qui les contient. D'autres fonctions sont répertoriées par module, tel qu'un fichier .dll. La vue Fonctions répertorie toutes les fonctions sans utiliser de hiérarchie. La recherche de votre propre code dans la vue Modules est souvent plus facile qu'avec la vue Fonctions, mais il peut être plus facile de comparer les fonctions dans la vue Fonctions.
Colonnes des vues Modules et Fonctions
Nom de la colonne |
Description |
---|---|
Exemples inclusifs |
Le nombre d'exemples collectés lorsque la fonction était dans la pile des appels. Le nombre d'exemples inclut les exemples collectés pour les fonctions appelées par la fonction. |
Exemples exclusifs |
Nombre d'exemples collectés lorsque la fonction exécutait son propre code. Les exemples exclusifs n'incluent pas les exemples collectés lorsque les fonctions étaient appelées par la fonction en cours d'exécution. |
% des exemples inclusifs |
Pourcentage du nombre total d'exemples collectés dans l'exécution du profilage lorsque la fonction était dans la pile des appels. Le numérateur correspond à Échantillons inclusifs de la fonction. Le dénominateur est le nombre total d'exemples collectés pour l'exécution du profilage. |
% exemples exclusifs |
Pourcentage du nombre total des exemples collectés dans l'exécution du profilage pour la fonction. La valeur n'inclut pas les exemples collectés pour les fonctions appelées par la fonction. |
Vue Lignes
La vue Lignes des données d'échantillonnage répertorie les données de performance sur les instructions qui étaient en cours d'exécution lorsque les exemples ont été collectés dans l'exécution du profilage. Dans un fichier source, une instruction peut couvrir plusieurs lignes d'un fichier source, et une ligne unique peut inclure plusieurs instructions.
Nom de la colonne |
Description |
---|---|
Exemples inclusifs |
Le nombre d'exemples collectés pour la ligne dans l'exécution du profilage. Le nombre d'exemples inclut les exemples collectés pour les fonctions appelées par la ligne. |
Exemples exclusifs |
Le nombre d'exemples collectés pour la ligne dans l'exécution du profilage. Le nombre d'exemples n'inclut pas les exemples collectés pour les fonctions appelées par la ligne. |
% des exemples inclusifs |
Pourcentage du nombre total des exemples collectés dans l'exécution du profilage pour la ligne. La valeur inclut les exemples collectés pour les fonctions appelées par la ligne. |
% exemples exclusifs |
Pourcentage du nombre total des exemples collectés dans l'exécution du profilage pour la ligne. La valeur n'inclut pas les exemples collectés pour les fonctions appelées par la ligne. |
Début ligne source |
Numéro de la ligne de début dans le fichier source au niveau duquel cet échantillon a été collecté. |
Début caractère source |
Décalage du caractère de début dans la ligne de fichier source au niveau de laquelle cet échantillon a été collecté. |
Fin ligne source |
Numéro de ligne de fin dans le fichier source au niveau duquel cet échantillon a été collecté. |
Fin du caractère source |
Décalage du caractère de fin dans la ligne de fichier source au niveau de laquelle cet échantillon a été collecté. |
Personnalisation des vues de la grille des données
Vous pouvez ajouter ou supprimer des colonnes de données et modifier l'ordre d'affichage des colonnes. Ouvrez le menu contextuel pour une ligne d'en-tête de tableau et choisissez Ajouter/Supprimer des colonnes. Activez les cases à cocher des colonnes à afficher, puis désactivez les cases à cocher des colonnes que vous souhaitez masquer. Utilisez les boutons fléchés pour déplacer une colonne sélectionnée.
Autres colonnes de données de profilage
Nom de la colonne |
Description |
---|---|
Adresse de la fonction |
Adresse de la mémoire de la fonction. |
Numéro de ligne de la fonction |
Numéro de ligne du début de cette fonction dans le fichier source. |
Fichier source |
Fichier source contenant la définition pour cette fonction. |
Nom de module |
Nom du module qui contient la fonction. |
Chemin de module |
Chemin d'accès du module qui contient la fonction. |
ID de processus |
ID du processus (PID) de l'exécution du profilage. |
Nom du processus |
Nom du processus. |