Chrono "QueryPerformanceCounter" ne fonctionne pas

Résolu
tri_yann
Messages postés
124
Date d'inscription
mercredi 23 novembre 2005
Statut
Membre
Dernière intervention
19 septembre 2013
- 25 oct. 2006 à 19:43
Gobillot
Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
11 mars 2019
- 28 oct. 2006 à 00:55
Bonjour,

Je tente de chronométrer un code pour en améliorer la performance, mais je n'y arrive pas en utilisant l'API QueryPerformanceCounter de Kernel32.

Private Declare Function QueryPerformanceCounter Lib "kernel32" (lpPerformanceCount As Currency) As Long
 
Public Function Start()
    QueryPerformanceCounter depart
End Function

Il renvoit toujours 0 dans la variable "depart". Quelqu'un sait-il pourquoi ?

Merci

Yann
A voir également:

7 réponses

Gobillot
Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
11 mars 2019
33
26 oct. 2006 à 21:38
re salut,
QueryPerformance ne fonctionne que sur les processeurs compatibles Intel Pentium
donc si pas disponible chez toi, tu peux pas l'utiliser
j'ai cherché d'autres chrono haute performance mais ils sont tous basés sur le même principe
il te reste GetTickcount à la milliseconde près

Daniel
3
Gobillot
Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
11 mars 2019
33
25 oct. 2006 à 19:58
Salut

il faut tester pour savoir si elle est disponible ou pas


Private Declare Function QueryPerformanceFrequency Lib "kernel32" (X As Currency) As Long


Private Sub Form_Load()

    Dim Ret  As Long

   

    Ret = QueryPerformanceFrequency(freq)

    If Ret = 0 Then

        MsgBox "This computer does not have a high-performance timer."

        End

        Exit Sub

    End If

    MsgBox "Fréquence en Hertz = " & FormatNumber(freq * 10000, 0)


End Sub

Daniel
0
tri_yann
Messages postés
124
Date d'inscription
mercredi 23 novembre 2005
Statut
Membre
Dernière intervention
19 septembre 2013
3
26 oct. 2006 à 13:23
Bonjout,

Résultat :
Res = 0
Mon pC n'a pas de chrono haute performance   

Sais-tu comment résoudre ca ?

Merci

Yann
0
tri_yann
Messages postés
124
Date d'inscription
mercredi 23 novembre 2005
Statut
Membre
Dernière intervention
19 septembre 2013
3
26 oct. 2006 à 13:23
Bonjout,

Résultat :
Res = 0
Mon pC n'a pas de chrono haute performance   

Sais-tu comment résoudre ca ?

Merci

Yann
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
tri_yann
Messages postés
124
Date d'inscription
mercredi 23 novembre 2005
Statut
Membre
Dernière intervention
19 septembre 2013
3
26 oct. 2006 à 23:09
Merci

Yann
0
tri_yann
Messages postés
124
Date d'inscription
mercredi 23 novembre 2005
Statut
Membre
Dernière intervention
19 septembre 2013
3
27 oct. 2006 à 11:15
Pour info, le GetTickCount ne fonctionne pas non plus.

--------------------------
Private Declare Function GetTickCount Lib "kernel32" (X As Currency) As Boolean
--------------------------
Function Chrono()
Dim t As Currency
GetTickCount t
End Function
------------------------------
Résultat : t = 0

Yann
0
Gobillot
Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
11 mars 2019
33
28 oct. 2006 à 00:55
c'est pas tout à fait comme ça
GetTickCount donne le nombre de millisecondes qui se sont écoulées depuis le début de la session courante de Windows.

pour avoir le temps d'exécution  il faut calculer la différence:
durée = temps fin - temps début

Private Declare Function GetTickCount Lib "kernel32" () As Long

Private Sub Chono_Click()
    Dim t As Long

    t = GetTickCount

'   le code à tester ici

    MsgBox "temps en millisecondes= " & (GetTickCount - t)

End Sub

Daniel
0