Mesurer le temps en Millisecondes en C

Résolu/Fermé
PClément Messages postés 9 Date d'inscription mercredi 26 septembre 2007 Statut Membre Dernière intervention 13 novembre 2007 - 5 nov. 2007 à 09:11
 SS - 15 avril 2017 à 08:15
Bonjour,

J'aimerai connaître la vitesse d'éxecution des mes algorithmes.
Je programme en C (pas C++) et je ne sais pas comment faire.

Je connais la librairie <time.h> mais les temps donnés se présentent en secondes uniquement ! Et mon algorithme est censé durer une centaine de millisecondes en principe. Donc cette librairie ne me sert à rien...

Alors une solution serait de créer un projet en C++ spécialement pour mesurer ce temps, mais ça ne m'amuse pas des masses...
Auriez vous une autre solution rapide que je peux implémenter dans mon code en C svp ?

Merci
A voir également:

6 réponses

Bonjour,
Voila cela devrait t'aider

#include <stdio.h>
#include <stdlib.h>

#include <time.h>

int main()
{
long i = 6000000L;
clock_t start, finish;
double duration;

// Delay for a specified time.
start = clock();
while( i-- )
;
finish = clock();
duration = (double)(finish - start) / CLOCKS_PER_SEC;
printf( "%2.1f seconds\n", duration );

return 0;
}
17
Merci
0
dubcek Messages postés 18764 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 9 février 2025 5 624
5 nov. 2007 à 10:51
Hello
avec gettimeofday

struct timeval {
time_t tv_sec; /* seconds */
suseconds_t tv_usec; /* microseconds */
};

and gives the number of seconds and microseconds since the Epoch (see time(2))
11
Arrêtez de mettre des trucs dont on n'y comprends rien.
0
je vois pas en quoi c'est incomprehensible..
il donne le nom de la fonction et la structure utilisée..

Et ressort le timestamp avec un nombre de millisecondes
1
PClément Messages postés 9 Date d'inscription mercredi 26 septembre 2007 Statut Membre Dernière intervention 13 novembre 2007 6
6 nov. 2007 à 09:43
Salut

Hum, merci mais je n'ai pas été convaincu :\ il faut inclure des librairies de c++ et ça ne compile pas avec mon prog en C uniquement.
Merci quand même.

Je sens qu'il va me falloir opter pour la solution C++ et winprecisetime..
2
PClément Messages postés 9 Date d'inscription mercredi 26 septembre 2007 Statut Membre Dernière intervention 13 novembre 2007 6
6 nov. 2007 à 13:56
Bonjour,

Merci pour ton message, je crois que ça marche, même si bizarrement mon algorithme prend 1.5s au lieu des 0.100s voulues...

C'est bien juste de placer mon code à la place du while(i--) n'est ce pas ? J'obtiens bien au final la différence entre les deux temps pris par la clock non ?

Ce 1.5s me perturbe...
2

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
PClément Messages postés 9 Date d'inscription mercredi 26 septembre 2007 Statut Membre Dernière intervention 13 novembre 2007 6
6 nov. 2007 à 14:15
bon, j'ai regardé encore un peu et décidement c'est mon code qui est trop lent :(

Merci encore pour ces quelques lignes très utiles !
2
dubcek Messages postés 18764 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 9 février 2025 5 624
6 nov. 2007 à 14:22
si le compilateur le permet, utiliser le profiling
-p
    Generate extra code to write profile information suitable for the analysis program prof. 
-pg
    Generate extra code to write profile information suitable for the analysis program gprof. 
-a
    Generate extra code to write profile information for basic blocks, which will record the number of times each basic block is executed. This data could be analyzed by a program like tcov. Note, however, that the format of the data is not what tcov expects. Eventually GNU gprof should be extended to process this data. 
-ax
    Generate extra code to read basic block profiling parameters from file `bb.in' and write profiling results to file `bb.out'. `bb.in' contains a list of functions. Whenever a function on the list is entered, profiling is turned on. When the outmost function is left, profiling is turned off. If a function name is prefixed with `-' the function is excluded from profiling. If a function name is not unique it can be disambiguated by writing `/path/filename.d:functionname'. `bb.out' will list some available filenames. Four function names have a special meaning: `__bb_jumps__' will cause jump frequencies to be written to `bb.out'. `__bb_trace__' will cause the sequence of basic blocks to be piped into `gzip' and written to file `bbtrace.gz'. `__bb_hidecall__' will cause call instructions to be excluded from the trace. `__bb_showret__' will cause return instructions to be included in the trace.
2