IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Profilage de code sous Windows et Linux

Tous niveaux


précédentsommairesuivant

II. Visual Studio Performance Tool

Visual Studio propose dans sa version Team Suite un profileur par échantillonnage et par instrumentation. Il est complètement intégré dans l'IDE et peut être géré par une solution Visual Studio.

Deux types de profil peuvent être générés, par échantillonnage ou par instrumentation.

II-A. Mise en place

Tout d'abord, le code doit être compilé avec l'option /Zi ou /Z7. Ensuite, l'édition des liens doit s'effectuer avec /DEBUG. Sans cela, il sera impossible de mesurer quelque chose.

Dans mon cas précis, je n'ai pas de projet Visual Studio, donc je commence par créer une solution avec mes fichiers sources pour pouvoir les parcourir en parallèle du profil.

Image non disponible
Lancement du profileur

Maintenant, il est nécessaire d'indiquer quelles seront les cibles à profiler.

Image non disponible
Ajouter un binaire

Les propriétés de la cible peuvent être modifiées, en particulier la manière d'exécuter le code. Ici, il s'agit d'un script Python exécuté dans le dossier du raytracer.

Image non disponible
Propriétés du binaire
Image non disponible
Propriétés générales du profil
Image non disponible
Ajout des cibles à profiler
Image non disponible
Échantillonnage sur évènements

II-B. Échantillonnage

Une fois le profil exécuté, la page principale reprend les fonctions dans lesquelles le maximum de temps a été passé, de manière inclusive ou exclusive. Inclusive signifie que c'est la fonction ou les fonctions appelées qui seront mesurées, exclusive ne donne que la fonction mesurée.

Image non disponible
Page récapitulative du profil

La liste des fonctions est organisée selon les bibliothèques et exécutables. Dans ce tableau est donné le temps passé absolu inclusif ou exclusif donné en nombre d'échantillons, mais aussi en pourcentage.

Image non disponible
Liste des fonctions échantillonnées

Une fois une fonction sélectionnée, les fonctions appelées et appelantes peuvent être affichées et analysées pour trouver un point chaud commun.

Image non disponible
Fonctions appelantes et appelées d'une fonction précise

Un arbre des appels est aussi fourni, mais il n'est pas très utilisable, malheureusement.

Image non disponible
Arbre des appels

Maintenant, voyons comment utiliser les résultats du profileur. La fonction la plus critique va être affichée et analysée.

Image non disponible
La fonction la plus critique du programme

La sous-fonction la plus critique dans cette fonction occupe 31 % du programme total, il s'agit d'un constructeur d'un objet. L'optimisation envisagée va réduire le nombre d'appels à ce constructeur et le pourcentage d'utilisation passe à 21 %. Ce gain sur cette fonction est important et se traduit sur l'ensemble du programme par un gain de près de 30 %. Le profil ici est donc incontournable.

Image non disponible
La fonction la plus critique après optimisation du programme

Avec le bouton droit, le menu contextuel permet d'accéder directement à la fonction étudiée (pratique).

II-C. Instrumentation

La sélection de l'instrumentation est facile : il suffit de choisir l'instrumentation à la place de l'échantillonnage et de relancer un profil.

La page principale de ce type de profil est différente : elle récapitule les fonctions les plus appelées, celles qui ont un coût inclusif important (s'il s'agit d'une fonction très appelée et très longue, elle est à optimiser) et celles qui ont un coût inclusif élevé.

Image non disponible
Page récapitulative du profil

La liste des fonctions instrumentées indique le nombre d'appels, le temps passé inclusif et exclusif, et enfin le temps réel passé dans l'application.

Image non disponible
Liste des fonctions instrumentées

Ici, le tableau est identique à l'échantillonnage, mais avec les temps calculés par l'instrumentation. De même pour l'arbre des appels.

Image non disponible
Fonctions appelantes et appelées d'une fonction précise
Image non disponible
Arbre des appels

précédentsommairesuivant

Copyright © 2008 Matthieu Brucher. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts. Droits de diffusion permanents accordés à Developpez LLC.