Plus précis que gettickcount

Soyez le premier à donner votre avis sur cette source.

Snippet vu 6 317 fois - Téléchargée 32 fois

Contenu du snippet

Petite fonction qui marche a peu près ke gettickcount mais avec une unité bien plus précise ke la milliseconde ! :)

Source / Exemple :


var Valeur : Int64;
QueryPerformanceCounter(Valeur);

La fonction renvoi dans Valeur.

A voir également

Ajouter un commentaire Commentaires
cs_Zeroc00l Messages postés 367 Date d'inscription lundi 1 avril 2002 Statut Membre Dernière intervention 11 février 2010
15 avril 2004 à 16:49
Bien utile cette source .. et simple en plus ... 8/10
j'ai remarqué une chose ;
Ayant voulu vérifier les dires de msx j'ai créer un nouveau projet avec un bouton et un timer.

Le code du bouton :

QueryPerformanceFrequency(freq);
QueryPerformanceCounter(deb);
timer1.enabled := true; //plus précis d'actiover le timer ici

le code du timer (interval fixé a 1000 ms) :

QueryPerformanceCounter(fin);
Timer1.Enabled := false;
ShowMessage(FormatFloat('0.000000 ms', (fin-deb)/freq*1000));

J'ai cliqué plusieur fois sur le bouton et le temps que le timer m'affiche varie de 993 ms à 1007 ms en une belle courbe gaussienne ...
C'est normal qu'il puisse se planter de 7 ms (j'ai même été à 8 ms : 992 ms) ???
cs_msx Messages postés 1 Date d'inscription samedi 8 mars 2003 Statut Membre Dernière intervention 19 janvier 2004
19 janv. 2004 à 13:44
je pense que C par rapport au cycle d 'horloge car pour avoir un nombre en ms il fo le diviser par la frequence calculé du CPU =

freq,deb,fin : int64;

QueryPerformanceFrequency(freq);
QueryPerformanceCounter(deb);
// data
QueryPerformanceCounter(fin);
FormatFloat('0.000000 ms', (fin-deb)/freq*1000);

on aura le chiffre exact en ms
balgrim Messages postés 52 Date d'inscription vendredi 26 avril 2002 Statut Membre Dernière intervention 28 octobre 2003
2 août 2003 à 14:41
avec une unité bien plus précise ke la milliseconde ==> quel unité? J'ai tenter de trouver, apparament c'est GetTickCount * 3579 Mais je suis pas sur!
fabiin Messages postés 329 Date d'inscription mercredi 4 avril 2001 Statut Membre Dernière intervention 8 décembre 2009 6
23 mars 2002 à 20:59
ouais, mais ca c pour les vieu 386,..; d'après ce ke l'on ma di :) normalement les processeur d'aujourd'hui ca marche :)
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
23 mars 2002 à 15:09
Attention aux résultat inattendus ! cette fonction renvoie un booléen si elle a trouvé un compteur haute résolution :
"The QueryPerformanceCounter function retrieves the current value of the high-resolution performance counter, if one exists."
Il serait plus exact d'écrire :
if not QueryPerformanceCounter(Valeur) then
Valeur :=GetTickCount;

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.