cs_Delphiprog
Messages postés4297Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 9 janvier 2013
-
23 mars 2002 à 15:09
cs_Zeroc00l
Messages postés367Date d'inscriptionlundi 1 avril 2002StatutMembreDernière intervention11 février 2010
-
15 avril 2004 à 16:49
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
cs_Zeroc00l
Messages postés367Date d'inscriptionlundi 1 avril 2002StatutMembreDernière intervention11 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.
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és1Date d'inscriptionsamedi 8 mars 2003StatutMembreDernière intervention19 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és52Date d'inscriptionvendredi 26 avril 2002StatutMembreDernière intervention28 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és329Date d'inscriptionmercredi 4 avril 2001StatutMembreDernière intervention 8 décembre 20096 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és4297Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 9 janvier 201332 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;
15 avril 2004 à 16:49
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) ???
19 janv. 2004 à 13:44
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
2 août 2003 à 14:41
23 mars 2002 à 20:59
23 mars 2002 à 15:09
"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;