Rechercher : dans
Par :

Mesurer le temps en Millisecondes en C

Dernière réponse le 6 nov 2007 à 14:22:33 PClément, le 5 nov 2007 à 09:11:47 
 Signaler ce message aux modérateurs

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

Meilleures réponses pour « Mesurer le temps en Millisecondes en C » dans :
Les templates en C++ Voir Introduction Avantages Inconvénients Quand utiliser des templates ? Que dois-je mettre dans les .hpp et dans les .cpp ? Convention de notations Quelques templates célèbres STL BGL Premiers pas Spécifications de templates Template par...
Le processeur chauffe trop - Problème de température VoirSi votre CPU chauffe trop, cela peut causer des reboots intempestifs de l'ordinateur, des instabilités, voire même détruire le processeur lui-même. Pour refroidir le processeur il existe plusieurs solutions : Améliorer les échanges d'air dans...
Télécharger Spyware Terminator VoirSpyware Terminator comprend: Scanning rapide des logiciels Anti Espions Protection en temps réel c Protection HIPS Protection Antivirus (ClamAv) Support en Plusieurs Langues Il empêche les spywares d'attaquer votre système, mais aussi...
Branchements en assembleur VoirOn appelle saut (ou branchement) en assembleur le fait de passer à une instruction autre que celle qui suit celle en cours en mémoire. En effet, en temps normal (c'est-à-dire sans instruction contraire) le processeur exécute les instructions...

1

dubcek, le 5 nov 2007 à 10:51:27
  • +1

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))

Répondre à dubcek

2

PClément, le 6 nov 2007 à 09:43:09
  • +1

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..

Répondre à PClément

3

Paulian, le 6 nov 2007 à 12:50:57
  • +1

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;
}

Répondre à Paulian

4

PClément, le 6 nov 2007 à 13:56:52
  • +1

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...

Répondre à PClément

5

PClément, le 6 nov 2007 à 14:15:39
  • +1

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 !

Répondre à PClément

6

 dubcek, le 6 nov 2007 à 14:22:33
  • +1

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.

Répondre à dubcek
Collection CommentÇaMarche.net