Comment obtenir le temps écoulé en C en millisecondes? (Windows)
J'ai cherché sur le Web mais j'ai seulement trouvé un moyen pour le faire, mais de cette façon, il retourne en quelques secondes au lieu de quelques millisecondes.
Mon code est:
#include <stdio.h>
#include <assert.h>
#include <time.h>
int main(void)
{
int solucion;
time_t start, stop;
clock_t ticks;
long count;
time(&start);
solucion = divisores_it(92000000, 2);
time(&stop);
printf("Finnished in %f seconds. \n", difftime(stop, start));
return 0;
}
Vous devez vous connecter pour publier un commentaire.
Une plate-forme de façon est d'utiliser des ftime.
Spécifiques à Windows lien ici: http://msdn.microsoft.com/en-us/library/aa297926(v=vs. 60).aspx
Exemple ci-dessous.
J'ai couru le code ci-dessus et de suivre à l'aide de VS2008 et vu qu'il fait des appels windows GetSystemTimeAsFileTime fonction.
De toute façon, ftime vous donnera millisecondes précision.
std::chrono
de la bibliothèque.C
et pasC++
. Votre suggestion nécessiteC++
.La solution ci-dessous semble OK pour moi. Qu'en pensez-vous?
Référence: http://www.acm.uiuc.edu/webmonkeys/book/c_guide/2.15.html#clock
timediff
dans cette ligne:elapsed = timediff(t1, t2);
à moins de définir le bon fichier d'en-tête. Justet2-t1
fonctionnera très bien.main()
. Aucun en-tête de fichier est nécessaire. Ett2-t1
ne vais pas vous donner la réponse en millisecondes.clock()
sur un programme multithread, car il renvoie la "le temps CPU consommé par le programme" plutôt que le temps écouléPour Windows,
GetSystemTime()
est ce que vous voulez. Pour POSIX,gettimeofday()
.GetSystemTime()
utilise la structureSYSTEMTIME
, qui fournit une milli-seconde résolution.Plus à ce sujet ici.
Ce morceau de code. Ceci est basé sur la réponse de Angus Comber: