doc:devel:profilagelinux
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revision | |||
doc:devel:profilagelinux [2016/03/30 15:23] – external edit 127.0.0.1 | doc:devel:profilagelinux [2018/05/04 17:14] (current) – removed boman | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Profilage de code sous Linux ====== | ||
- | ===== gprof ===== | ||
- | |||
- | === Description === | ||
- | Il s'agit d'un programme de profilage pour des codes en C/C++. | ||
- | |||
- | === Utilisation === | ||
- | |||
- | * compiler le code avec l' | ||
- | * lancer le programme, qui va normalement créer un fichier appelé // | ||
- | * taper : //gprof [nom_du_programme] gmon.out > profil.txt// | ||
- | |||
- | On se retrouve alors avec un fichier texte (// | ||
- | |||
- | Profile plat: | ||
- | Chaque échantillon dénombre 0.01 seconds. | ||
- | % cumulatif | ||
- | temps | ||
- | 13.72 1.62 | ||
- | 4.23 2.12 | ||
- | 3.26 2.51 | ||
- | 3.13 2.88 | ||
- | 2.71 3.20 | ||
- | 2.62 3.51 | ||
- | 2.37 3.79 | ||
- | 2.37 4.07 | ||
- | 2.29 4.34 | ||
- | 2.24 4.60 | ||
- | 2.12 4.85 | ||
- | [...] | ||
- | |||
- | C'est très convivial. Il y a moyen de déchiffrer le fichier, en tout cas de déterminer les quelques fonctions les plus gourmandes en temps de calcul, mais ça devient vite éprouvant. Il existe une interface graphique appelée **Gprof2Dot** qui crée des graphes beaucoup plus lisibles à partir du fichier de sortie de //gprof// (entre autres). J'ai peu testé cette interface parce que je ne suis arrivé à créer de graphes que pour de très petits programmes. Metafor, je n'ai même pas tenté. Il y a peut-être moyen d'en tirer quelque chose en jouant avec les options. | ||
- | |||
- | === Références === | ||
- | |||
- | [[http:// | ||
- | [[http:// | ||
- | |||
- | ===== valgrind ===== | ||
- | |||
- | === Description === | ||
- | |||
- | Il s'agit en fait d'une suite d' | ||
- | ou réaliser le profilage d'un code à l'aide de différentes méthodes. L' | ||
- | |||
- | === Utilisation === | ||
- | |||
- | * compiler avec l' | ||
- | * taper la commande : //valgrind --tool=callgrind --dump-instr=yes --simulate-cache=yes --collect-jumps=yes [programme] [arguments]// | ||
- | * un fichier // | ||
- | * pour visualiser le graphe, taper (si l'ID est 7388) : // | ||
- | Le résultat est assez bordélique, | ||
- | |||
- | {{: | ||
- | |||
- | === Références === | ||
- | |||
- | [[http:// | ||
- | [[http:// | ||
- | [[http:// | ||
- | |||
- | ===== pgprof ===== | ||
- | |||
- | === Description === | ||
- | |||
- | Il semble que ce soit l' | ||
- | |||
- | === Références === | ||
- | |||
- | [[http:// | ||
- | |||
- | ===== scalasca ===== | ||
- | |||
- | === Description === | ||
- | |||
- | C'est un logiciel open-source pour le profilage de codes parallélisés avec //OpenMP// et //MPI// (officiellement //Scalable Performance Analysis of Large-Scale Applications// | ||
- | |||
- | === Références === | ||
- | |||
- | [[http:// | ||
- | |||
- | ===== cProfile ===== | ||
- | |||
- | === Description === | ||
- | |||
- | // | ||
- | |||
- | === Utilisation === | ||
- | |||
- | Voici un exemple de profilage de la fonction qui charge les modèles dans Metafor: | ||
- | import cProfile, pstats | ||
- | cProfile.run(' | ||
- | r1 = pstats.Stats(' | ||
- | r1.sort_stats(' | ||
- | |||
- | Le résultat est assez semblable à la sortie de //gprof//, c'est à dire assez sobre, je dirais presque austère : | ||
- | Thu Sep 2 17:12:12 2010 profil1 | ||
- | | ||
- | 4045151 function calls in 21.459 CPU seconds | ||
- | | ||
- | Ordered by: cumulative time | ||
- | List reduced from 237 to 20 due to restriction <20> | ||
- | | ||
- | ncalls | ||
- | 1 0.000 0.000 | ||
- | 1 0.005 0.005 | ||
- | 1 0.075 0.075 | ||
- | 1 3.546 3.546 | ||
- | 94888 | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | 1 0.000 0.000 0.184 0.184 / | ||
- | 1 0.184 0.184 0.184 0.184 {_mtViz.new_VizWin} | ||
- | | ||
- | | ||
- | | ||
- | 1051480 | ||
- | | ||
- | 1 0.021 0.021 0.021 0.021 / | ||
- | 94893 0.019 0.000 0.019 0.000 {len} | ||
- | | ||
- | | ||
- | |||
- | === Références === | ||
- | [[http:// | ||
- | |||
doc/devel/profilagelinux.1459344184.txt.gz · Last modified: 2016/03/30 15:23 by 127.0.0.1