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
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 :Envoyé par brakeche
Avec une résolution de l'ordre de la microseconde (1/1000000 de seconde).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 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...Envoyé par gege2061
Pas de Wi-Fi à la maison : CPL
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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.
je n'avais pas pensé à ça, merciEnvoyé 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 : Sélectionner tout - Visualiser dans une fenêtre à part
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).Envoyé par gege2061
Pas de Wi-Fi à la maison : CPL
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager