Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

QueryPerformanceFrequency

6 réponses
Avatar
Michael
Bonjour à tous,

il est dit dans la MSDN, à propos de QueryPerformanceFrequency:

The QueryPerformanceFrequency function retrieves the frequency of the high-
resolution performance counter, if one exists.

Qu'est-ce qui fait que ce compteur peut ne pas exister? Est-ce un manque
matériel (vieille configuration) ou un manque logiciel (windows < 2000 par
exemple) ?

Je fais un logiciel qui ne tournera que sur XP. Ai-je à me soucier de ça?

Merci d'avance

6 réponses

Avatar
Vincent Burel
"Michael" <michael.at.gmail.dot.com> wrote in message
news:
Bonjour à tous,

il est dit dans la MSDN, à propos de QueryPerformanceFrequency:

The QueryPerformanceFrequency function retrieves the frequency of the


high-
resolution performance counter, if one exists.

Qu'est-ce qui fait que ce compteur peut ne pas exister? Est-ce un manque
matériel (vieille configuration) ou un manque logiciel (windows < 2000 par
exemple) ?

Je fais un logiciel qui ne tournera que sur XP. Ai-je à me soucier de ça?



Oui, il faut appeler QueryPerformanceFrequency pour avoir la fréquence du
Timer.
C'est ce qui vous permettra de relier à un temps, la valeur retournée par
QueryPerformanceCounter

QueryPerformanceFrequency renvoie usuellement (et historiquement) la
fréquence du PIT : 1.193.180 Hz , mais aujourd'hui certaines carte mère
peuvent intégrer de nouveau PIT ayant une fréquence plus élevée. C'est
pourquoi il faut appeler QueryPerformanceFrequency pour connaitre
précisément cette fréquence.

VB
Avatar
Michael
> Oui, il faut appeler QueryPerformanceFrequency pour avoir la fréquence du
Timer.
C'est ce qui vous permettra de relier à un temps, la valeur retournée par
QueryPerformanceCounter

QueryPerformanceFrequency renvoie usuellement (et historiquement) la
fréquence du PIT : 1.193.180 Hz , mais aujourd'hui certaines carte mère
peuvent intégrer de nouveau PIT ayant une fréquence plus élevée. C'est
pourquoi il faut appeler QueryPerformanceFrequency pour connaitre
précisément cette fréquence.



Je sais déjà tout ça, merci :)

Ma question portait plutôt sur les conditions pour lesquelles
QueryPerformanceFrequency ne fonctionne pas et pour lesquelles on doit alors
utiliser un Timer "traditionnel"... Est-ce la version de Windows qui fait que
ça ne fonctionne pas, ou bien le matériel de l'ordinateur?

Sinon, qu'est-ce que le PIT?
Avatar
Christian ASTOR
Michael wrote:

Qu'est-ce qui fait que ce compteur peut ne pas exister? Est-ce un manque
matériel (vieille configuration) ou un manque logiciel (windows < 2000 par
exemple) ?



Processeur (ACPI counter)
Avatar
Arnaud Debaene
"Michael" <michael.at.gmail.dot.com> a écrit dans le message de news:

Oui, il faut appeler QueryPerformanceFrequency pour avoir la fréquence du
Timer.
C'est ce qui vous permettra de relier à un temps, la valeur retournée
par
QueryPerformanceCounter

QueryPerformanceFrequency renvoie usuellement (et historiquement) la
fréquence du PIT : 1.193.180 Hz , mais aujourd'hui certaines carte mère
peuvent intégrer de nouveau PIT ayant une fréquence plus élevée. C'est
pourquoi il faut appeler QueryPerformanceFrequency pour connaitre
précisément cette fréquence.



Je sais déjà tout ça, merci :)

Ma question portait plutôt sur les conditions pour lesquelles
QueryPerformanceFrequency ne fonctionne pas et pour lesquelles on doit
alors
utiliser un Timer "traditionnel"... Est-ce la version de Windows qui fait
que
ça ne fonctionne pas, ou bien le matériel de l'ordinateur?



Je crois que certains Alpha historiques n'avaient pas de HPC... Je ne pense
pas que ca s'applique encore aujourd'hui...

Par contre, la fréquence retournée peut varier dans de grandes proportions.
En effet, en cas de machine multi-processeurs / dual core (de plus en plus
courantes), la HAL ne peut pas simplement utiliser la valeur de RDTSC du
processeur, vu qu'il y a plusieurs processeurs.... Même genre de problème
pour certains processeurs pour portables dont la fréquence peut varier pour
économiser la batterie. Dans ces cas, la HAL doit utiliser des mécanismes
plus sioux et sophistiqués, ce qui se traduit généralement par une fréquence
inférieure du HPC.


Sinon, qu'est-ce que le PIT?


Je pense que Vincent voulait plutôt parler du PIC : Programmable Interrupt
Controller. C'est le chip chargé historiquement de multiplexer les
différentes interruptions en entrée du processeur, et qui accessoirement
comporte une horloge afin de pouvoir réaliser une interruption à intervalles
réguliers sur le processeur (interruption utilisée notamment par le task
scheduler pour interrompre le thread courant en fin de time-slice).

Arnaud
MVP - VC
Avatar
Vincent Burel
"Arnaud Debaene" wrote in message
news:4575d66b$0$1072$

> Sinon, qu'est-ce que le PIT?
Je pense que Vincent voulait plutôt parler du PIC : Programmable Interrupt
Controller.



non, je parlais bien du PIT, Programmable Interrupt Timer.(qui appelle
l'interruption matériel x08 = IRQ0... qui elle, sera gérée par le PIC) qui
historiquement est un chip intel 8254 cadencé à 1.193.180 Hz.

VB
Avatar
Michael
OK, merci à tous pour vos précisions...