152 votes

Comment mesurer le temps en millisecondes avec ANSI C?

En utilisant uniquement ANSI C, est-il possible de mesurer le temps avec une précision de quelques millisecondes ou plus? Je parcourais time.h mais je n’ai trouvé que des fonctions de seconde précision.

107voto

Robert Gamble Points 41984

Il n’existe pas de fonction ANSI C offrant une résolution temporelle supérieure à 1 seconde, mais la fonction POSIX gettimeofday fournit une résolution en microsecondes. La fonction d'horloge mesure uniquement la durée d'exécution d'un processus et n'est pas précise sur de nombreux systèmes.

53voto

Nick Points 8126
#include <time.h>
clock_t uptime = clock() / (CLOCKS_PER_SEC / 1000);

4voto

Dark Shikari Points 6178

La meilleure précision que vous puissiez obtenir consiste à utiliser l’instruction "rdtsc" pour x86 uniquement, qui peut fournir une résolution au niveau de l’horloge démarrage de l'application).

Le principal problème ici est de mesurer le nombre d’horloges par seconde, ce qui ne devrait pas être trop difficile.

-4voto

Jichao Points 5680

Sous les fenêtres:

 SYSTEMTIME t;
GetLocalTime(&t);
swprintf_s(buff, L"[%02d:%02d:%02d:%d]\t", t.wHour, t.wMinute, t.wSecond, t.wMilliseconds);
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X