temps passé à l'exécution d'un algorithme en millisecondes
Bonjour,
J'ai codé un algorithme. J'ai besoin de calculer le temps d'exécution de cet algorithme (date Fin d'exécution et affichage du résultat _ date début d’exécution).
J'ai essayé avec le code suivant :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
#include <time.h>
void algo()
{
time_t t1,t2;
time(&t1);
instructions de lalgorithme
time(&t2);
std::cout<<ctime(&t1)<<endl;
std::cout<<ctime(&t2)<<endl;
} |
Le résultat est affiché sous la forme suivante date d’aujourd’hui heures:minutes:secondes pour le temps de début t1 et de fin t2. Et, je fais moi même la différence entre les deux. Mon problème est le suivant : je veux,en fait, avoir un affichage ou le temps apparait en millisecondes car mon algorithme est rapide donc le temps passé à l'exécution se voit plus clair en millisecondes.
Merci d'avance.
Une solution parmi d'autre
Salut !
J'ai une solution pour ça, et elle n'utilise que du C.
Tu peux utiliser la fonction gettimeofday.
man :
Code:
1 2 3 4 5 6 7 8 9
|
#include <sys/time.h>
int gettimeofday(struct timeval *tv, struct timezone *tz);
struct timeval {
time_t tv_sec; /* seconds */
suseconds_t tv_usec; /* microseconds */
}; |
Le premier argument c'est donc une struct timeval que tu initialises par une simple déclaration. Initialises-en deux en fait ! Une pour le début et une pour la fin de l'exécution.
Tu peux mettre la struct timezone à NULL, c'est juste pour connaître ton fuseau horaire ! L'OS fait ça tout seul.
Enfin tu appelles gettimeofday sur ton tvdeb au début et sur tvfin à la fin. Puis tu fais un petit calcul, avec les champs de struct timeval qui vont bien.
Ce qui donne :
Code:
1 2 3 4 5 6 7 8 9 10 11 12
|
#define N 1000
struct timeval tv1, tv2 ;
gettimeofday(&tv1,NULL);
[... le programme ...]
gettimeofday(&tv2,NULL);
unsigned long time_spend_in_milliseconds= (tv2.tv_sec - tv1.tv_sec) * N + (tv2.tv_usec - tv1.tv_usec) / N ; |