Calcul du temps d'execution en millisecondes

Yakurena Messages postés 47 Date d'inscription samedi 27 mars 2004 Statut Membre Dernière intervention 1 juillet 2007 - 17 avril 2007 à 22:38
spagrave Messages postés 1 Date d'inscription vendredi 27 avril 2007 Statut Membre Dernière intervention 27 avril 2007 - 27 avril 2007 à 14:02
Bonjour,

  Je réalise un programme en C++ sous Linux dans lequel j'ai besoin de calculer le temps d'éxécution avec une précision en millisecondes.  Je n'ai trouvé qu'une façon de faire, mais qui utilise des bibliothèques du fichier windows.h, inutilisables ici puisque le programme doit tourner sous Linux. Quelqu'un saurait-il s'il existe une autre manière en C++ de calculer le temps avec cette précision ?
  Merci d'avance de votre réponse.

4 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
17 avril 2007 à 23:34
clock() à vérifier

ciao...
BruNews, MVP VC++
0
acx01b Messages postés 280 Date d'inscription dimanche 7 septembre 2003 Statut Membre Dernière intervention 8 juillet 2014 6
18 avril 2007 à 00:37
salut pour quelque chose de peu précis on peut utiliser clock(),

mais sous linux on peu aussi utiliser la commande shell time
par exemple time a.out renvoie le temps mis pour l'exécution de a.out

ou bien encore mieux il y a le header times.h:
http://www.linux-kheops.com/doc/man/manfr/man-html-0.9/man2/times.2.html
http://www.opengroup.org/onlinepubs/007908799/xsh/systimes.h.html
http://66.102.9.104/search?q=cache:IGpP1IJCUPAJ:www.labri.fr/perso/betrema/systemes/mai97.html+exemple+times+times.h&hl=fr&ct=clnk&cd=2&gl=fr

qui est parfait pour calculer avec précision le temps processeur, le temps utilisateur etc.

a+
0
turnerom Messages postés 492 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 12 janvier 2012 1
19 avril 2007 à 09:34
static inline double Now()
{
struct timeval tp;
gettimeofday(&tp,NULL);
return double(tp.tv_sec) + double(tp.tv_usec)*1e-6;
}

double t1 = Now();
...
double elapsed = Now()-t1;

ps : précision de l'ordre de la microseconde
ps2: pas la peine de poster la même question sur plusieurs sites différents regarde plutot sur les autres, je t'avais déjà répondu !

ps3 : si ca interesse du monde, la même chose pour windows :

static inline double Now()
{
double freq, t;

QueryPerformanceFrequency((LARGE_INTEGER*)&freq);
QueryPerformanceCounter((LARGE_INTEGER*)&t);

return (( (t*1000000000) / freq) / 1000000000);
}
0
spagrave Messages postés 1 Date d'inscription vendredi 27 avril 2007 Statut Membre Dernière intervention 27 avril 2007
27 avril 2007 à 14:02
tip top merci turnerom
0
Rejoignez-nous