Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Gérer le temps jusqu'aux millisecondes

8 réponses
Avatar
TSalm
Bonjour,

"time_t" sait gérer le temps jusqu'aux secondes.
Est-ce qu'il existe un outil plutôt standart pour gérer le temps et qui
sait travailler jusqu'aux millisecondes ?

D'avance merci,
-TSalm

8 réponses

Avatar
Fabien LE LEZ
On Tue, 17 Nov 2009 18:32:21 +0100, TSalm :

Est-ce qu'il existe un outil plutôt standart pour gérer le temps et qui
sait travailler jusqu'aux millisecondes ?



En théorie, clock() devrait convenir.
http://www.cplusplus.com/reference/clibrary/ctime/clock/

Toutefois, sous Windows, il est relativement difficile d'obtenir une
résolution meilleure que 15 ou 16 millisecondes : il faut bricoler
avec des fonctions spécifiques à Windows, comme
QueryPerformanceCounter().
Avatar
TSalm
Le Tue, 17 Nov 2009 18:56:31 +0100, Fabien LE LEZ
a écrit:

On Tue, 17 Nov 2009 18:32:21 +0100, TSalm :

Est-ce qu'il existe un outil plutôt standart pour gérer le temps et qui
sait travailler jusqu'aux millisecondes ?



En théorie, clock() devrait convenir.
http://www.cplusplus.com/reference/clibrary/ctime/clock/

Toutefois, sous Windows, il est relativement difficile d'obtenir une
résolution meilleure que 15 ou 16 millisecondes : il faut bricoler
avec des fonctions spécifiques à Windows, comme
QueryPerformanceCounter().




Non, je voulais parler du temps dans le sens
années,mois,jours,heures,minutes,secondes,millisecondes.
Il me semble que ca tiendrait dans un <long long>, alors que <time_t> ne
tiens que dans un <long> et ne gére que jusqu'aux secondes.
Avatar
Fabien LE LEZ
On Tue, 17 Nov 2009 19:03:03 +0100, TSalm :

Non, je voulais parler du temps dans le sens
années,mois,jours,heures,minutes,secondes,millisecondes.



POSIX définit gettimeofday(). Mais comme d'hab', tu vas te heurter au
fait que Windows n'est pas POSIX...
Avatar
Richard Delorme
Le 17/11/2009 19:14, Fabien LE LEZ a écrit :
On Tue, 17 Nov 2009 19:03:03 +0100, TSalm:

Non, je voulais parler du temps dans le sens
années,mois,jours,heures,minutes,secondes,millisecondes.



POSIX définit gettimeofday(). Mais comme d'hab', tu vas te heurter au
fait que Windows n'est pas POSIX...




Sous Windows, il y a GetSystemTime() et GetLocalTime().

http://msdn.microsoft.com/en-us/library/ms724950%28VS.85%29.aspx

--
Richard
Avatar
Fabien LE LEZ
On Tue, 17 Nov 2009 19:17:13 +0100, Richard Delorme
:

Sous Windows, il y a GetSystemTime()



...et Cygwin.
Avatar
Richard Delorme
Le 17/11/2009 19:41, Fabien LE LEZ a écrit :
On Tue, 17 Nov 2009 19:17:13 +0100, Richard Delorme
:

Sous Windows, il y a GetSystemTime()



...et Cygwin.



Pour une compatibilité POSIX, on doit pouvoir s'en passer. P.ex avec :

http://www.cadforte.com/system64.html

--
Richard
Avatar
TSalm
Le Tue, 17 Nov 2009 20:19:36 +0100, Richard Delorme a
écrit:

Le 17/11/2009 19:41, Fabien LE LEZ a écrit :
On Tue, 17 Nov 2009 19:17:13 +0100, Richard Delorme
:

Sous Windows, il y a GetSystemTime()



...et Cygwin.



Pour une compatibilité POSIX, on doit pouvoir s'en passer. P.ex avec :

http://www.cadforte.com/system64.html




Merci pour vos réponses.
Heureux utilisateur de MinGW, je dispose bien <sys/time.h>.
Avatar
James Kanze
On Nov 17, 5:56 pm, Fabien LE LEZ wrote:
On Tue, 17 Nov 2009 18:32:21 +0100, TSalm :



>Est-ce qu'il existe un outil plutôt standart pour gérer le
>temps et qui sait travailler jusqu'aux millisecondes ?



En théorie, clock() devrait
convenir.http://www.cplusplus.com/reference/clibrary/ctime/clock/



Toutefois, sous Windows, il est relativement difficile
d'obtenir une résolution meilleure que 15 ou 16 millisecondes
: il faut bricoler avec des fonctions spécifiques à Windows,
comme QueryPerformanceCounter().



La fonction clock() ne convient pas du tout, puisque d'une part,
ce qu'elle est censée mesurer, c'est le temps CPU utilisé par le
programme, et non le temps tout court, et de l'autre, la
résolution n'est pas spécifiée, et est rarement jusqu'aux
millisecondes. (Historiquement, dans les premiers Unix, où la
fonction a vue le jour, CLOCKS_PER_SECOND était 50 ou 60, selon
que la machine se trouvait en Europe ou aux États-unis. La norme
Posix exige que CLOCKS_PER_SECOND vale 1000000, mais dit
explicitement que la resolution dépend du système.)

Et sous Unix et sous Windows il y a des fonctions fournissant
une meilleur résolution, mais elles ne sont pas portables.

--
James Kanze