C comme JerikoJerk

 

.:::: Spam ::::.

Inscription à la newsletter
 

Lundi 27 mars 2006
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.


#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;
}

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);

C'est tout !

---
edit: correction de la fct stop qui avait un problème de valeur de retours. (un copier/coller malheureux)
par JJ publié dans : Divers
recommander

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]
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...
réponse de : JJ (site web) le: 13/12/2006 18:43:30

Adresse de trackback pour cet article :

http://ann.over-blog.com/trackback.php?ref=265139&ref_article=2268499
ajouter un commentaire  
 
Blog : Sport sur over-blog.com - Contact - C.G.U. - Rémunération en droits d'auteur avec TF1 Network - Signaler un abus