Salut Sylvain,
Letuffe Sylvain <slyserv@???> writes:
> > 2) Si les fonctions qui consomment beaucoup de ressources sont de grande
> > taille alors compile les fichiers qui les contiennent (et uniquement
> > ceux la) avec l'option -pg. Utilise egalement cette option a l'edition
> > de liens. Relance l'executable et utilise alors la commande
> > gprof nom_de_l'executable > listing.detaille
> > La, tu auras en principe une analyse fine au niveau des boucles de ces
> > fonctions. Tout compiler en -pg sur un code important te genererait un
> > trop gros volume d'information avec -pg et serait difficile a exploiter.
>
>
> Mon programme est relativement simple et l'option -pg me va pas trop mal,
> ( a-priori )
> j'ai qu'un seul programme et pas d'autres fichiers à compiler séparément.
> ce que je voudrais profiler, grosso modo, c'est une dizaines de fonctions max.
>
> et avoir une vue un peu hierarchique car la fonction fondamentale que j'appel
> ( bouffant d'ailleurs 60% du temps ) est appelée par plusieurs sous fontions
> et je pédale dans la purée avec gprof... ( en plus d'avoir des annomalies )
> pourrais-t-il y avoir des incompatibilités de l'option -pg ?
> avec gtk peut-etre ?
Pas d'incompatibilite. L'option -pg a la compilation instrumente ton
code pour generer le fichier gmon.out. La meme option au link permet
d'utiliser une version instumentee de la glibc (libc_p). Tout code
non instrumente ne generera pas d' information, c'est tout.
La page de man de gprof (comme toutes les pages de man des outils lies
a GCC, comme Make & autres) est tres succinte (voire parfois
incomplete ou obsolete). Il vaut mieux se referer aux pages "info":
$ info gprof
Ou le browser d'aide de GNOME, dans l;a section "Info Pages":
$ gnome-help-browser &
> extrait :
> % cumulative self self total
> time seconds seconds calls ms/call ms/call name
> 65.65 3.02 3.02 28886579 0.00 0.00 calcul_norme_pre
> 13.91 3.66 0.64 621 1.03 4.44 decoup
> 12.83 4.25 0.59 873 0.68 2.28 decrois
>
> 6.74 4.56 0.31 33191 0.01 0.03 algo_btd
> -> jamais j'appel cette fonction !! elle existe mais je ne l'ai pas
> appelée lors du test
Le fichier gmon.out n'est pas forcement re-initialise lors d'une
execution. Cela permet de faire tourner une suite de test complete &
de consulter le resultat apres (gcov, pour le test de couverture du
code) a egalement cette fonctionnalite.
> 0.43 4.58 0.02 51548 0.00 0.00 permut
> 0.43 4.60 0.02 3389 0.01 0.01 longueur_chemin
> 0.00 4.60 0.00 67973 0.00 0.00 copie
> 0.00 4.60 0.00 51548 0.00 0.00 permutvilles
> 0.00 4.60 0.00 33558 0.00 0.00 aleatoire01
> 0.00 4.60 0.00 3600 0.00 0.00 calcul_norme
> 0.00 4.60 0.00 552 0.00 0.00 aleatoire1n
> 0.00 4.60 0.00 70 0.00 0.01 operation_chemin
> 0.00 4.60 0.00 69 0.00 0.00 pourcent
> 0.00 4.60 0.00 60 0.00 0.00 draw_brush
> 0.00 4.60 0.00 60 0.00 0.00 draw_line
> 0.00 4.60 0.00 60 0.00 0.00 refresh
> 0.00 4.60 0.00 1 0.00 4599.99 algo_fourmis
A+
--
François-Xavier 'FiX' KOWALSKI