obtention du temps en millisecond en C,C++

obtention du temps en millisecond en C,C++ - C - Programmation

Marsh Posté le 03-08-2004 à 14:59:17    

Bonjour a tous,
 
J'aimerais obtenir le temps d'execution d'un bout de code en milliseconde. Malheureusement la librairie time.h ne permet d'obtenir que le temps en seconde, ce qui n'est pas suffisamment precis dans mon cas.
 
D'autres librairies permettent elles cela?
 
Merci d'avance.

Reply

Marsh Posté le 03-08-2004 à 14:59:17   

Reply

Marsh Posté le 03-08-2004 à 15:04:12    

tu bosses sous quel OS ?


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 03-08-2004 à 15:30:24    

Sous windows : TimeGetTime() ou GetTickCount() je crois

Reply

Marsh Posté le 03-08-2004 à 15:33:19    

sinon en assembleur, t'as le redoutable RDTSC qui te refile le nombre de cycles d'un bout de code !
en faisant le ration RDTSC/fréquence du processeur, on obtient une mesure imparable :D


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 03-08-2004 à 16:16:03    

sous Windows, comme dit harko, RDTSC et/ou QueryPerformanceCounter() (RDTSC variant suivant le CPU et son état, l'autre est invariant)

Reply

Marsh Posté le 03-08-2004 à 16:19:46    

merci pour vos reponses,
 
je suis sous une redhat 9.0
 
Par contre je ne pense pas qu'un top d'horloge corresponde a un cycle processeur, donc je ne crois pas qu'on puisse en deduire le temps d'execution avec le ratio nb cycle/frequence processeur.


Message édité par david81 le 03-08-2004 à 16:21:32
Reply

Marsh Posté le 03-08-2004 à 16:32:29    

pour nunux, peut être gettimeofday():
 
http://www.rt.com/man/gettimeofday.2.html
 
et là tu as des mecs qui parlent de projet sur sourceforge:
 
http://www.ussg.iu.edu/hypermail/l [...] /0103.html

Reply

Marsh Posté le 03-08-2004 à 16:44:40    

merci pour tout,
 
je vais de ce pas essayer gettimeofday et la comparer avec les autres solutions que j'ai pour voir laquelle se rapproche le mieux de la realite.

Reply

Marsh Posté le 03-08-2004 à 16:57:01    

david81 a écrit :

merci pour vos reponses,
 
je suis sous une redhat 9.0
 
Par contre je ne pense pas qu'un top d'horloge corresponde a un cycle processeur, donc je ne crois pas qu'on puisse en deduire le temps d'execution avec le ratio nb cycle/frequence processeur.


ben si !
exemple pour un processeur à 1 Ghz (soit 1 000 000 000 de cycles par secondes)
si RDTSC t'indique qu'une portion de code prend 200 000 cycles, alors le temps sera de 200 000/1 000 000 000 = 0,0002 secondes, soit 0,2 ms [:sinclaire]


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 03-08-2004 à 20:04:24    

La fréquence elle bouge pas :??:


---------------
Un matin je me lèverai et il fera beau.
Reply

Marsh Posté le 03-08-2004 à 20:04:24   

Reply

Marsh Posté le 03-08-2004 à 20:07:50    

ça dépends de la puissance de ta carte graphique, la tienne doit être trop puissante (si tu veux j'ai une vieille matrox en stock [:cupra])


---------------
From now on, you will speak only when spoken to, and the first and last words out of your filthy sewers will be "Sir!"
Reply

Marsh Posté le 03-08-2004 à 20:19:07    

J'ai une Riva TNT² :D


---------------
Un matin je me lèverai et il fera beau.
Reply

Marsh Posté le 03-08-2004 à 22:10:00    

moi une ATI 9800 ...  :pt1cable:  
Mai j' ai aussi de vieilles cartes avec 1 Mo de mem ...   :lol:  :whistle:

Reply

Marsh Posté le 03-08-2004 à 22:12:52    

je suis con, en fait je voulais poster ma réponse à la con là:
http://forum.hardware.fr/hardwaref [...] 5930-1.htm
[:ddr555]


---------------
From now on, you will speak only when spoken to, and the first and last words out of your filthy sewers will be "Sir!"
Reply

Marsh Posté le 03-08-2004 à 22:14:56    

Boulet :o


---------------
Un matin je me lèverai et il fera beau.
Reply

Marsh Posté le 04-08-2004 à 02:32:18    

:lol: le relou.
 
pour en revenir au RDTSC, la fréquence peut bouger avec des cpus de portables, ou des Athlon 64 en Cool & Quiet (enfin je crois).
 

Reply

Marsh Posté le 04-08-2004 à 08:23:02    

C'est bien ce qui me semblait :/


---------------
Un matin je me lèverai et il fera beau.
Reply

Marsh Posté le 04-08-2004 à 13:06:38    

ok merci je vais me pencher sur la solution de RDTSC et voir ce que ca donne.

Reply

Marsh Posté le 04-08-2004 à 18:21:16    

bah le mieux, ce serait de mesurer périodiquement la fréquence  CPU (du style toutes les 10ms tu recalcules la fréquence CPU), comme ça fait un truc exploitable sur les PC portables et les systèmes qui font varier la fréquence CPU.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed