Bon autant l'avouer tout de suite j'ai la flemme de penser sérieusement aux sockets que je vous ai promis: c'est assez long et j'ai du mal à extraire la substantifique moelle pour faire quelque chose de lisible sur un blog. Voilà on en parlait l'autre jour je vous propose aujourd'hui un petit truc que j'emprunte à mes professeurs: des petites routines pour chronométrer.
Au passage la catégorie change de nom...
Bon qu'est ce qu'on peut faire avec ce bout de code? rien. on n'a pas une précision diabolique: la miniseconde. Cependant pour l'évaluation de la durée d'exécution de code sur des temps de calculs longs c'est amplement suffisant. En fait on peut facilement faire mieux surtout sous unix, il n'y a pas besoin de beaucoup creuser.
Pour les windowsiens qui ne pourront pas utiliser gettimeofday() je propose GetTickCount() qui vous demandera d'inclure windows.h essayez et vous verrez!
voilà le code: les commentaires sont ouverts.
Bon si je manque d'inspiration un jour je vous proposerais un exercice pour rendre le code réentrant et portable (c'est à dire utilisable en thread et sur windows);
apres il suffit de faire:
C'est tout !
---
edit: correction de la fct stop qui avait un problème de valeur de retours. (un copier/coller malheureux)
Au passage la catégorie change de nom...
Bon qu'est ce qu'on peut faire avec ce bout de code? rien. on n'a pas une précision diabolique: la miniseconde. Cependant pour l'évaluation de la durée d'exécution de code sur des temps de calculs longs c'est amplement suffisant. En fait on peut facilement faire mieux surtout sous unix, il n'y a pas besoin de beaucoup creuser.
Pour les windowsiens qui ne pourront pas utiliser gettimeofday() je propose GetTickCount() qui vous demandera d'inclure windows.h essayez et vous verrez!
voilà le code: les commentaires sont ouverts.
#include <sys/time.h>
#include <string.h>
struct timeval tim;
double t1, t2;
/* pour demarer le décompte on ajoute à son code */
void chrono_start(){
gettimeofday(&tim, NULL);
t1=tim.tv_sec+(tim.tv_usec/1000000.0);
}
/* pour arreter le décompte un sime appel à stop suffit */
double chrono_stop(){
gettimeofday(&tim, NULL);
t2=tim.tv_sec+(tim.tv_usec/1000000.0);
return t2 - t1;
}
#include <string.h>
struct timeval tim;
double t1, t2;
/* pour demarer le décompte on ajoute à son code */
void chrono_start(){
gettimeofday(&tim, NULL);
t1=tim.tv_sec+(tim.tv_usec/1000000.0);
}
/* pour arreter le décompte un sime appel à stop suffit */
double chrono_stop(){
gettimeofday(&tim, NULL);
t2=tim.tv_sec+(tim.tv_usec/1000000.0);
return t2 - t1;
}
Bon si je manque d'inspiration un jour je vous proposerais un exercice pour rendre le code réentrant et portable (c'est à dire utilisable en thread et sur windows);
apres il suffit de faire:
chrono_start();
ma_fonction(...);
duree = chrono_stop();
printf("Durée d'execution %f \n", duree);
ma_fonction(...);
duree = chrono_stop();
printf("Durée d'execution %f \n", duree);
C'est tout !
---
edit: correction de la fct stop qui avait un problème de valeur de retours. (un copier/coller malheureux)
Commentaires
et ta quoi a proposer pour les unixiens??
commentaire n° : 1
posté par :
djed
le: 19/04/2006 14:54:51
Si unix-like te suffit (linux) gettimeofday() est parfais, je n'ai pas travaillé sur des systemes 100% unix. Je chercherai.
réponse de : JJ (site web)
le: 23/04/2006 12:03:43
Pour unix(et donc linux), tu peux utiliser la commande
time. Allez voir :
[code]
man time
[/code]
time. Allez voir :
[code]
man time
[/code]
commentaire n° : 2
posté par :
fantomas62
le: 28/05/2006 09:38:04
oui oui oui.
time mesure la durée d'exécution d'un processus. pas seulement la fonction que tu souhaites...
time mesure la durée d'exécution d'un processus. pas seulement la fonction que tu souhaites...
réponse de : JJ (site web)
le: 13/12/2006 18:43:30