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

7 réponses

Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
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 34
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 34
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
Rejoignez-nous