Ceci est une ancienne révision du document !
Travailler avec le temps
QueryPerformanceCounter
QueryPerformanceCounter
récupère la valeur actuelle du compteur de performance, qui est un horodateur à haute résolution (<1µs) pouvant être utilisé pour les mesures d'intervalles de temps.
QueryPerformanceFrequency
est une valeur fixe, on peut la stocker dans une valeur et utiliser cette valeur, pas besoin de faire un appel a chaque fois a cette API.
function QPC: int64; begin if not QueryPerformanceCounter(Result) then Result:=-1; end; function QPF: int64; begin if not QueryPerformanceFrequency(Result) then Result:=-1; end; function QPCToMicrosecond(const AQPC: int64): Double; begin Result:=(AQPC*1000000) / QPF; end; function QPCToMillisecond(const AQPC: int64): Double; begin Result:=(AQPC*1000) / QPF; end;
Sources:
RDTSC
Surement le temps le plus petit avec lequel on peut travailler.
Sur mon PC RDTSC retourne une valeur 266x superieur a QueryPerformanceCounter.
Et comme par hasard la vitesse de mon processeur est de 2.66Ghz
function HardwareTicks: int64; assembler; asm RDTSC; end;
Aprés je n'ai pousser l'experience plus loin,
a savoir comment recuperer la vitesse du processeur pour convertir le temps RDTSC en microsecondes ou nanosecondes.
a savoir comment recuperer la vitesse du processeur pour convertir le temps RDTSC en microsecondes ou nanosecondes.
Et quid des processeurs dont la vitesse varie en fonction de la charge ???
Vous pourriez laisser un commentaire si vous étiez connecté.