Profilage de code sous Windows et Linux

Tous niveaux


précédentsommairesuivant

I. Qu'est un profil de code ?

Un profil de code est un outil indispensable permettant de repérer une fonction ou une instruction qui prennent trop de temps et qui doivent donc être refactorisées. Le repérage de ces fonctions ou instructions est un exercice difficile et en général mal fait si un outil de profilage n'est pas utilisé.

Un dicton indique que 80% du temps est passé dans 20% du code (on entend parfois aussi ce dicton avec les chiffres 90 et 10), ce sont ces 20% qui doivent être repérés.

Plusieurs méthodes de profilage existent. Chaque méthode a ses avantages et ses inconvénients. Il est aussi à noter que le temps d'exécution ne fait pas tout, le nombre d'instructions, absolu et par seconde, leur type, le comportement du cache, ... tous ces éléments peuvent être mesurés et donnent des informations.

I-A. Profil par échantillonnage

Le profil par échantillonnage consiste à regarder tous les n cycles/instructions/défauts de cache/... quelle est la fonction en cours d'exécution, ainsi que les fonctions parentes.

Ce type de profil est très facile à réaliser, le profileur exécutant simplement le code et mesurant régulièrement des valeurs : pas d'intrusion, vitesse quasi-identique à la réalité. En revanche, le profil n'est pas exact et donc doit être pris avec précaution. Il est nécessaire de tester avec plusieurs valeurs de fréquence d'échantillonnage.

I-B. Profil par instrumentation

L'instrumentation modifie le programme testé en ajoutant à chaque appel de fonction une fonction d'instrumentation. Celle-ci va mesurer le temps d'appel, le nombre d'instructions exécutés, ... Tout cela grâce à des compteurs internes au processeur qui permet d'accéder à ces valeurs.

Ce profil est intermédiaire entre l'échantillonnage et l'émulation. Il est plus intrusif que les deux autres, le programme étant modifié, mais le résultat est plus exact. En revanche, du code supplémentaire est exécuté, donc le résultat n'est pas exact.

I-C. Profil par émulation

L'émulation consiste à exécuter le programme sur un processeur virtuel. Tout peut être mesuré de manière exacte.

Le principal inconvénient de cette méthode est sa lenteur. En effet, l'émulation d'un processeur est complexe. De plus, le processeur émulé n'est pas le processeur utilisé, donc les résultats ne sont pas généralisables. En revanche, pour le processeur émulé, ils sont exacts.


précédentsommairesuivant

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

  

Copyright © 2008 Matthieu Brucher. Aucune reproduction, même partielle, ne peut être faite de ce site et 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.