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)
 
 
Blog : Sport sur over-blog.com - Contact - C.G.U. - Rémunération en droits d'auteur avec TF1 Network - Signaler un abus