Hallo zusammen,
die kernel32 Funktion GetTickCount() liefert - soweit war mir das schon bekannt nur Paketweise Ticks seit Systemstart. Ich hatte mir angelesen, dass das systembedingt in Stacks von 10 oder 16 Ticks erfolgt.
Nun habe ich aber festgestellt, dass sich manchmal statt der 16er Ticks bei meinem System 15er Ticks ergeben. Ich gehe sogar so weit zu sagen, dass 40 x 16er Tickstacks und 24 x 15er Tickstacks erzeugt werden, so dass jede Sekunde genau mit 1000 Ticks abschließt und somit ein Tick eine Millisekunde darstellt.
Meine Frage nun, zugegebenerweise weniger eine VBA- als eine kernel32-Frage:
Erfolgt der Ticksprung gleichmäßig also alle 0,015625 Sekunden? Oder sind die 15er Sprünge auch kürzer als die 16er Sprünge? Ist dies vielleicht auf jeder Maschine anders?
Ich benötige nicht unbedingt mehr Genauigkeit, möchte aber gern wissen wie genau meine Zeitmessung ist.
P.S.: Zur Info habe ich einmal ein Modul, mit welchem ich meine Ergebnisse erlangt habe angefügt.
Danke für alle Antworten und Liebe Grüße
Christian
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | Public Function own_IntPrfTckSek()
Dim own_dat1 As Date
Dim own_dat2 As Date
Dim own_lngtim1 As Long
Dim own_lngtim2 As Long
Dim own_lngtim3 As Long
Dim own_int1 As Integer
own_int1 = 0
own_dat1 = Now()
own_dat2 = Now()
Do While Now() = own_dat1
Loop
own_lngtim1 = win_GetTickCount()
own_lngtim2 = win_GetTickCount()
own_dat2 = Now()
Do While Now() = own_dat2
If own_lngtim2 <> win_GetTickCount() Then
own_lngtim2 = win_GetTickCount()
own_int1 = own_int1 + 1
End If
own_lngtim3 = win_GetTickCount()
Loop
MsgBox "Pro Sekunde gibt es " & own_int1 & " Tickspr?nge"
MsgBox "Es wurden insgesamt " & own_lngtim3 - own_lngtim1 & " Ticks in der Sekunde gez?hlt."
End Function
|
|