wie kann man die Rechenzeit eines Programms messen, wenn es so kurz ist, dass ElapsedMilliseconds() meist nur 0ms zurückgibt?
Die Suche in den Foren hat mir nicht weitergeholfen (vielleicht auch nur unter dem falschen Stichwort gesucht

moin
Code: Alles auswählen
Global Freq.q
Global Start.q
Global Ende.q
Global Zeit.d
SetThreadAffinityMask_(GetCurrentThread_(), 1) ;Thread nur von Core0 ausführen lassen
QueryPerformanceFrequency_(@Freq)
QueryPerformanceCounter_(@Start)
;hier eine Schleife als "Testcode"
For i = 1 To 1000
j = i * i
Next
;SetThreadAffinityMask_(GetCurrentThread_(), 1) ;Werte wieder von Core0 auslesen lassen, nur bei Bedarf einfügen
QueryPerformanceCounter_(@Ende)
Zeit = (Ende - Start) / Freq
MessageRequester("Verbratene Zeit", StrD(Zeit)+" s")
Zeit=ElapsedMilliseconds()
For i = 1 To 1000
j = i * i
Next
Zeit=ElapsedMilliseconds()-Zeit
MessageRequester("Verbratene Zeit", StrD(Zeit)+" ms")
Code: Alles auswählen
Global TimeAdjustment .l ;Werte in 100-er ns
Global TimeIncrement.l
Global TimeAdjustmentDisabled.l ;Boolescher Wert
Global Ausgabe.f
GetSystemTimeAdjustment_(@TimeAdjustment , @TimeIncrement, @TimeAdjustmentDisabled)
Ausgabe = TimeAdjustment / 10000 ;so Wert in ms
MessageRequester("Auflösung von ElapsedMilliseconds()", "Beträgt auf diesem PC "+StrF(Ausgabe)+" ms")