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:
Surement le temps le plus petit avec lequel on peut travailler.
Sur mon PC RDTSC retourne une valeur 266x superieur a QueryPerformanceCounter
(voir ci-dessus).
Et comme par hasard la vitesse de mon processeur est de 2.66Ghz
function HardwareTicks: int64; assembler; asm RDTSC; end;
Et quid des processeurs dont la vitesse varie en fonction de la charge ???