[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[linux] Mesure du temps d'exécution d'un process
Bonjour,
Je vous préviens, c'est long: les questions sont résumées à la fin.
Je voudrais mesurer le temps d'exécution d'une fonction au sein d'un process
avec une résolution d'au moins 20 micro-secondes.
Je tourne sur une RH7.1 avec un kernel 2.4.2
Donc, ça se présente ainsi:
t0 = mesure_de_temps()
appel_fonction()
temps_consomme = mesure_de_temps() - t0
Je vois 2 possibilités pour mesure_de_temps(): times() ou getrusage().
Je ne suis pas sûr, mais j'ai l'impression qu'elles renvoient la même info
au niveau temps user et temps système consommé, mais dans des unités
différentes: l'un étant exprimé en ticks horloges, l'autre en secondes. Je
suppose aussi que la résolution est la même et définie par le nombre de
ticks horloge par secondes.
Dans time.h, je trouve #define CLK_TCK CLOCKS_PER_SEC
Cette macro est définie à 2 endroits:
asm/param.h:
#ifdef __KERNEL
#define CLOCKS_PER_SEC 100
#endif
bits/time.h:
#define CLOCKS_PER_SEC 1000000l
Si je fais, printf("%ld", sysconf(_SC_CLK_TCK)), ça me retourne 100.
Par contre un printf("%ld", CLOCKS_PER_SEC) me retourne 1000000.
Donc, les mesures de temps retournées par times(), je dois les diviser par
100 ou par 1000000 pour obtenir le temps en secondes ?
Si c'est par 100, cela veut dire que j'aurai une résolution de 10ms, ce qui
insuffisant pour mes besoins.
Si c'est par 1000000, ça ne me prouve pas nécessairement que la résolution
est de 1 micro-seconde.
En résumé,
1) quelle est la résolution maximale que je peux obtenir ?
2) comment puis-je faire pour obtenir une résolution qui me satisfasse ?
Merci à ceux qui se pencheront sur ce problème épineux,
Christophe
>>>>---------------> mailto:Christophe.Schockaert@spacebel.be
Once it's perfectly aimed, the flying arrow goes straight to its target.
Thus, don't worry when things go right.
There will be enough time to worry about if they go wrong.
Then, it's time to fire a new arrow towards another direction.
Don't sink. Adapt yourself ! The archer has to shoot accurately and
quickly.
[Words of Erenthar, the bowman ranger] <---------------<<<<
[ Soyez précis dans vos sujets svp afin de déterminer directement ]
[ le type de demande... ]
[ Pour vous (dés)inscrire, aller sur http://unixtech.be/ml.php ]
[ Archives de la mailing list: http://archives.unixtech.be/linux/ ]
[ http://unixtech.be Contact: listmaster@unixtech.be ]