Timer haute précision

pitch069 Messages postés 27 Date d'inscription samedi 1 mars 2008 Statut Membre Dernière intervention 1 mars 2010 - 28 avril 2009 à 17:31
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 - 6 mai 2009 à 16:39
Bonjour,

je souhaite creer un Timer qui aurait une precision de l'ordre de la microseconde.

En parcourant le net, et differentes discussion sur forum, il me semble dur voir impossible de réaliser ca sous windows !

On sait jamais peut etre que quelqu'un va avoir une idée.

Pour l'instant j'ai un Timer qui aurait une précision d'a peu pres une dizaine de microseconde.

Voici mon Timer :

//Je récupere la fréquence du processeur
QueryPerformanceFrequency( &f );
freq = (double)f.QuadPart;

//Calcul du nombre de tick en 30us (=durée que je voudrais mon Timer)
nbr_clk = nbr_seconde * freq;


//Timer qui commence

//Je recupere le nbre de tick d''horloge a l'instant t1 depuis la mise sous tension de l'ordi
QueryPerformanceCounter(&t1);

//Calcul du nbre de tick final = (nbre de tick en t1) + (nbre de tick en 30us)
time_end = (double)t1.QuadPart + nbr_clk;

while ( (double)t1.QuadPart < time_end ) //Je boucle tant que mon nbre de tick est inférieur au nbre de tick final
{
j++;
QueryPerformanceCounter(&t1); //je
}
//Timer qui finit

}

return 0;
}


Si quelqu'un aurait une amélioration a apporter a mon code pour que mon timer soit plus précis, ou si il existe une autre solution pour faire un Timer plus precis ?

Merci de votre aide

1 réponse

cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
6 mai 2009 à 16:39
Salut,

Sur un PC où la fréquence d'horloge est fixe, tu peux utiliser RDTSC.
Tu peux calculer la fréquence du processeur à l'aide de RDTSC + QueryPerformanceCounter, puis te baser sur cette fréquence.

Dans quel cas la fréquence un processeur n'est pas fixe ?

Au moins dans le cas d'un ordinateur portable conçut pour baisser la fréquence s'il n'y a pas de besoin de temps CPU (underclocking), de manière à limiter la consommation d'énergie (Cas de mon centrino. Par contre je n'avais aucun problème à ce niveau sur un AMD athlon d'un fixe).
0
Rejoignez-nous