J'ai un petit probl=E8me de compr=E9hension avec la fonction
gettimeofday.
Ayant voulu l'utiliser pour mesurer le temps d'un traitement j'ai =E9t=E9
surpris des r=E9sultats qui par momment sont =E9tonnants, en tout cas
pour le champ tv_usec de la structure timeval.
D=E9j=E0 la valeur de tv_usec et toujour inf=E9rieur =E0 tv_sec. Comme les
deux champs correspondent au temps =E9coul=E9 depuis le 01/01/1970, le
premier en micro-seconde et le second en secondes ca ne me semble pas
logique. Mais peut =EAtre y a t il une expliquation ?
Dans le test suivant le resutat semble coh=E9rent (code =E0 la fin) :
gcc -std=3Dc99 tod.c && ./a.out 100
[=2E..]
Temps :
(1121244597 - 1121244597) =3D 0s
(21481 - 21290) =3D 191=B5s
Par contre, par momment quand le temps est relativement long, les
r=E9sultats semblent vraiment bidons, j'obtiens des valeurs n=E9gatives
pour le champ tv_usec (ce n'est pas syst=E9matique) :
gcc -std=3Dc99 tod.c && ./a.out 100000
[=2E..]
Temps :
(1121244183 - 1121244179) =3D 4s
(223652 - 380030) =3D -156378=B5s
Voyez vous une explication ?
Info :
gcc -v : gcc version 3.3.2 (Mandrake Linux 10.0 3.3.2-6mdk)
uname -a : Linux teli 2.6.3-7mdksmp #1 SMP Wed Mar 17 14:24:28 CET 2004
i686 unknown unknown GNU/Linux