Salut a tous,
Je voudrais savoir comment on peut calculer le temps d'execution de mon programme,est ce qu'il y'a une fonction pour ça ?
(un programme quelquonque)
merci
Version imprimable
Salut a tous,
Je voudrais savoir comment on peut calculer le temps d'execution de mon programme,est ce qu'il y'a une fonction pour ça ?
(un programme quelquonque)
merci
Bonjour,
Si le code dure moins d'une seconde (précision de la fonction time), vous pouvez effectuer plusieurs appels dans une boucle for sans oublier de diviser le temps d'exécution d'autant.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 #include <stdio.h> #include <time.h> int main (void) { time_t start, end; start = time (NULL); { /* Portion de code a chronometrer */ } end = time (NULL); printf ("Temps en secondes : %ld\n", end - start); return 0; }
si on veut que ça soit en 1/100;
pour etre plus preci
Pas en C standard, j'ai ça qui traine en utilisant la glib :Citation:
Envoyé par brakeche
Avec une résolution de l'ordre de la microseconde (1/1000000 de seconde).Code:
1
2
3
4
5
6
7
8
9 GTimer timer = g_timer_new (); g_timer_start (timer); { /* Code à chronométrer */ } g_timer_stop (timer); printf ("Temps ecoule : %f\n", g_timer_elapsed (timer, NULL)); g_timer_destroy (timer);
En dernier recour il reste les fonctions spécifiques au système (il doit surement y avoir des posts à ce sujet qui traine sur le forum :arrow: Recherche)
Pour faire des benchs, j'utilise gettimeofday() dont la precision est la microseconde
http://man.developpez.com/man2/gettimeofday.2.php
1) Recuperation du temps
2) Deroulement du programme
3) Rerecuperation du temps et calcul de la difference. Pour se faire il faut d'abord convertir les 2 timeval en microsecondes.
time() mesure du temps horloge (wallclock). Pour du temps CPU, il faut utiliser clock() et CLOCKS_PER_SEC qui sont faits pour ça...Citation:
Envoyé par gege2061
vous pouvez utiliser ftime(struct timeb *) dans la bibliothèque <sys/timeb.h>
timeb est une structure de cette forme :
avec une precision en milliseconde.Code:
1
2
3
4
5
6 struct timeb { long time; short millitm; short timezone; short dstflag; };
pour plus d'information voir : http://man.developpez.com/man3/ftime.3.php
pour encore une meilleur précision tu peux regarder ce site.
http://haypo.developpez.com/article/frequence_cpu/
il faudras une peut d'imagination.
:oops: je n'avais pas pensé à ça, merci ;)Citation:
Envoyé par Emmanuel Delahaye
[edit]correction :
Mais dans ce cas la précision est d'au moins 1 seconde. Sur mon PC elle est de l'ordre de la microseconde mais je pense que ce n'est pas standard ?Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 #include <stdio.h> #include <time.h> int main (void) { clock_t start, end; start = clock (); { /* Portion de code a chronometrer */ } end = clock (); printf ("Temps en secondes : %f\n", (end - start) / (double)CLOCKS_PER_SEC); return 0; }
[/edit]
Non. La précision est définie pat l'implémentation (implementation-dependent).Citation:
Envoyé par gege2061