OVH Cloud OVH Cloud

[C] afficher le temps mis par une fonction

2 réponses
Avatar
thomas.baruchel
Bonjour,

j'avais l'habitude de mettre dans mon code c une option
#define WITH_DEBUG
dont le but essentiel était d'afficher la durée mise par une fonction
pour comparer plusieurs implémentations différentes de la même fonction
ou pour une recherche quelconque d'optimisation. J'utilisais simplement
time(NULL) sur mon vieil ordinateur qui était un 70Mhz. Maintenant que
je suis passé à quelque chose de plus rapide, le résultat n'est plus très
significatif (les fonctions en question mettant par exemple deux secondes
pour s'exécuter). Y aurait-il un moyen portable d'afficher désormais
les fractions de seconde. Le vieux code était:

#ifdef WITH_DEBUG
auto time_t t = time(NULL);
#endif
...
#ifdef WITH_DEBUG
fprintf(stderr,"Time: %d sec.\n",time(NULL)-t);
#endif

Cordialement,

--
« nous devons agir comme si la chose qui peut-être ne sera pas devait
être » (Kant, Métaphysique des moeurs, doctrine du droit, II conclusion)

Thomas Baruchel <baruchel@laposte.net>

2 réponses

Avatar
Marc Boyer
Thomas Baruchel wrote:
Bonjour,
Y aurait-il un moyen portable d'afficher désormais
les fractions de seconde.


gettimeofday permet de coder des microsecondes.
C'est globalement au delà de la précision de l'OS (en général).

Ceci dit, si l'objectif c'est de savoir ce qui prend
du temps dans ton code, pourquoi ne pas utiliser des outils
faits pour (genre gprof).

Marc Boyer
--
Lying for having sex or lying for making war? Trust US presidents :-(

Avatar
Thomas Nemeth
Le mar 07 oct 2003 à 14:52, Thomas Baruchel a tapoté :
| Bonjour,

Salut.


| j'avais l'habitude de mettre dans mon code c une option
| #define WITH_DEBUG
| dont le but essentiel était d'afficher la durée mise par une fonction
| pour comparer plusieurs implémentations différentes de la même fonction
| ou pour une recherche quelconque d'optimisation. J'utilisais simplement
| time(NULL) sur mon vieil ordinateur qui était un 70Mhz. Maintenant que
| je suis passé à quelque chose de plus rapide, le résultat n'est plus très
| significatif (les fonctions en question mettant par exemple deux secondes
| pour s'exécuter). Y aurait-il un moyen portable d'afficher désormais
| les fractions de seconde. Le vieux code était:

Pour des trucs assez précis, j'utilise plutôt
TimeVal t;
gettimeofday(&t, NULL);

avec la fonction :

long diff_time(TimeVal t1, TimeVal t2) {
long ds = t2.tv_sec - t1.tv_sec;
long du = t2.tv_usec - t1.tv_usec;
return du + 1000000*ds;
}




Thomas
--
I WON'T NOT USE NO DOUBLE NEGATIVES
I WON'T NOT USE NO DOUBLE NEGATIVES
I WON'T NOT USE NO DOUBLE NEGATIVES
-+- Bart Simpson on chalkboard in episode BABF02