Timer haute précision

Signaler
Messages postés
27
Date d'inscription
samedi 1 mars 2008
Statut
Membre
Dernière intervention
1 mars 2010
-
Messages postés
3874
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
7 novembre 2014
-
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

Messages postés
3874
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
7 novembre 2014
13
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).