Je suis sûr que qques uns d'entre vous se sont déja penché sur le problème de savoir quel était entre deux codes ou deux instructions la plus rapide.
Je cherche un bout de code pour chronometrer précisement une éxecution.
; Idea from Erix14 / Djes
; Return the time elapsed between Start & Stop in second
; 0.001 = 1 ms
; 0.000001=1 µs
; Caution ! : If the installed hardware supports a high-resolution performance counter
; MeasureHiResIntervalStart return 1 / 0 if no hardware support
; Use this functions for measure interval < 1 ms
Global MeasureHiResIntervalTime.l
ProcedureDLL MeasureHiResIntervalStart()
QueryPerformanceFrequency_(@retour)
If retour <>0 : retour = 1 : EndIf
QueryPerformanceCounter_(@MeasureHiResIntervalTime)
ProcedureReturn retour
EndProcedure
ProcedureDLL.f MeasureHiResIntervalStop()
QueryPerformanceCounter_(@Temp)
Difference=Temp-MeasureHiResIntervalTime
QueryPerformanceFrequency_(@HiResTimerFrequency)
Periode.f=1/HiResTimerFrequency
DureeTotale.f=Difference*Periode
ProcedureReturn DureeTotale
EndProcedure
;/ Test1 : For Next
If MeasureHiResIntervalStart()
For n=0 To 10000
Next n
Debug MeasureHiResIntervalStop()
EndIf
;/ Test2 : Repeat : Until
If MeasureHiResIntervalStart()
Repeat
a+1
Until a=10000
Debug MeasureHiResIntervalStop()
EndIf
Debug "The fastest is For/Next"