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;
Vous pourriez laisser un commentaire si vous étiez connecté.