Page 1 sur 1
ElapsedNanoseconds() - Temps système écoulés en nanosecondes
Publié : lun. 27/févr./2012 23:26
par Le Soldat Inconnu
Salut,
J'avais besoin de plus précis que le ElapsedMilliseconds.
Donc voici 1000 fois plus précis
Code : Tout sélectionner
Procedure.q ElapsedTime()
Protected ElapsedTime.q
QueryPerformanceCounter_(@ElapsedTime)
ProcedureReturn ElapsedTime
EndProcedure
Procedure.q ElapsedNanoseconds()
Protected ElapsedTime.q
Static Frequency.q
QueryPerformanceCounter_(@ElapsedTime)
If Frequency = 0
QueryPerformanceFrequency_(@Frequency)
EndIf
ElapsedTime * 1000000 / Frequency
ProcedureReturn ElapsedTime
EndProcedure
Temps1 = ElapsedTime()
Delay(1000)
Temps2 = ElapsedTime()
Delay(1000)
Temps3 = ElapsedTime()
Delay(1000)
Temps4 = ElapsedTime()
Debug "Retour du compteur de performance"
Debug Temps2 - Temps1
Debug Temps3 - Temps2
Debug Temps4 - Temps3
Temps1 = ElapsedNanoseconds()
Delay(1000)
Temps2 = ElapsedNanoseconds()
Delay(1000)
Temps3 = ElapsedNanoseconds()
Delay(1000)
Temps4 = ElapsedNanoseconds()
Debug "Temps système écoulé en nanosecondes"
Debug Temps2 - Temps1
Debug Temps3 - Temps2
Debug Temps4 - Temps3
Re: ElapsedNanoseconds() - Temps système écoulés en nanoseco
Publié : lun. 27/févr./2012 23:46
par case
je savais pas qu'on pouvait avoir plus précis que la milliseconde en temps système
Re: ElapsedNanoseconds() - Temps système écoulés en nanoseco
Publié : lun. 27/févr./2012 23:56
par Backup
pareil !

Re: ElapsedNanoseconds() - Temps système écoulés en nanoseco
Publié : mar. 28/févr./2012 7:49
par comtois
case a écrit :je savais pas qu'on pouvait avoir plus précis que la milliseconde en temps système
C'est que tu ne lis pas assez la
FAQ de DVP

Re: ElapsedNanoseconds() - Temps système écoulés en nanoseco
Publié : mar. 28/févr./2012 8:41
par PAPIPP
Bonjour LSI
J'ai obtenu des valeurs négatives.
Après correction TEMPSx.Q, les résultats sont meilleurs.
Code : Tout sélectionner
Procedure.q ElapsedTime()
Protected ElapsedTime.q
QueryPerformanceCounter_(@ElapsedTime)
ProcedureReturn ElapsedTime
EndProcedure
Procedure.q ElapsedNanoseconds()
Protected ElapsedTime.q
Static Frequency.q
QueryPerformanceCounter_(@ElapsedTime)
If Frequency=0
QueryPerformanceFrequency_(@Frequency)
EndIf
ElapsedTime*1000000/Frequency
ProcedureReturn ElapsedTime
EndProcedure
Temps1.q=ElapsedTime()
Delay(1000)
Temps2.q=ElapsedTime()
Delay(1000)
Temps3.q=ElapsedTime()
Delay(1000)
Temps4.q=ElapsedTime()
Debug "Retour du compteur de performance"
Debug Temps2-Temps1
Debug Temps3-Temps2
Debug Temps4-Temps3
Temps1=ElapsedNanoseconds()
Delay(1000)
Temps2=ElapsedNanoseconds()
Delay(1000)
Temps3=ElapsedNanoseconds()
Delay(1000)
Temps4=ElapsedNanoseconds()
Debug "Temps système écoulé en nanosecondes"
Debug Temps2-Temps1
Debug Temps3-Temps2
Debug Temps4-Temps3
@+
Re: ElapsedNanoseconds() - Temps système écoulés en nanoseco
Publié : mar. 28/févr./2012 8:46
par djes
Oui, c'est vieux comme Hérode ce truc, mais bon, c'est bien d'avoir un topic là-dessus
A noter que c'est moyennement fiable, voir là :
http://www.purebasic.fr/english/viewtop ... ceCounter_, sauf à avoir besoin d'un comptage très précis assez court sur la durée.
Il y a plusieurs exemples sur les forums.
Re: ElapsedNanoseconds() - Temps système écoulés en nanoseco
Publié : mar. 28/févr./2012 9:17
par PAPIPP
Bonjour à tous
La procédure suivante donne le nombre de cycle machine. Elle évite les API
Et d’autre part elle donne les mêmes résultats.
http://www.purebasic.fr/french/viewtopi ... TSC#p97997
On peut donc trouver un rapport entre le nb de cycles et le temps en nanoseconde.
Code : Tout sélectionner
Procedure.q nbcs()
!RDTSC
ProcedureReturn
EndProcedure
Procedure.q ElapsedTime()
Protected ElapsedTime.q
QueryPerformanceCounter_(@ElapsedTime)
ProcedureReturn ElapsedTime
EndProcedure
Procedure.q ElapsedNanoseconds()
Protected ElapsedTime.q
Static Frequency.q
QueryPerformanceCounter_(@ElapsedTime)
If Frequency=0
QueryPerformanceFrequency_(@Frequency)
EndIf
ElapsedTime*1000000/Frequency
ProcedureReturn ElapsedTime
EndProcedure
Temps1.q=ElapsedTime()
Delay(1000)
Temps2.q=ElapsedTime()
Delay(1000)
Temps3.q=ElapsedTime()
Delay(1000)
Temps4.q=ElapsedTime()
Debug "Retour du compteur de performance"
Debug Temps2-Temps1
Debug Temps3-Temps2
Debug Temps4-Temps3
Temps1=ElapsedNanoseconds()
Delay(1000)
Temps2=ElapsedNanoseconds()
Delay(1000)
Temps3=ElapsedNanoseconds()
Delay(1000)
Temps4=ElapsedNanoseconds()
Debug "Temps système écoulé en nanosecondes"
Debug Temps2-Temps1
Debug Temps3-Temps2
Debug Temps4-Temps3
Temps1=nbcs()
Delay(1000)
Temps2=nbcs()
Delay(1000)
Temps3=nbcs()
Delay(1000)
Temps4=nbcs()
Debug "Temps système écoulé en cycle"
Debug Temps2-Temps1
Debug Temps3-Temps2
Debug Temps4-Temps3
@+
Re: ElapsedNanoseconds() - Temps système écoulés en nanoseco
Publié : mar. 28/févr./2012 9:53
par djes
Notre ami idle avait fait un très beau code là-dessus :
http://www.purebasic.fr/english/viewtop ... ceCounter_
Re: ElapsedNanoseconds() - Temps système écoulés en nanoseco
Publié : jeu. 01/mars/2012 9:35
par djes