Thema Datum  Von Nutzer Rating
Antwort
Rot GetTickCount() aus kernel32 liefert unterschiedliche Ergebnisse
27.03.2020 22:30:48 Fulgorth
NotSolved
28.03.2020 00:55:50 Gast50681
NotSolved

Ansicht des Beitrags:
Von:
Fulgorth
Datum:
27.03.2020 22:30:48
Views:
653
Rating: Antwort:
  Ja
Thema:
GetTickCount() aus kernel32 liefert unterschiedliche Ergebnisse

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

 

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()
    ' Warten bis der Sekundensprung erfolgt
    Do While Now() = own_dat1
    Loop
    ' Alles auf Null - Zeit die dies ben?tigt ist nach Tests zu vernachl?ssigen
    own_lngtim1 = win_GetTickCount()
    own_lngtim2 = win_GetTickCount()
    own_dat2 = Now()
    'Bis zum n?chsten Sekunden-Takt
    Do While Now() = own_dat2
        'Z?hlung bei jedem Ticksprung
        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

 


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
Rot GetTickCount() aus kernel32 liefert unterschiedliche Ergebnisse
27.03.2020 22:30:48 Fulgorth
NotSolved
28.03.2020 00:55:50 Gast50681
NotSolved