Deutsch
Quelltexte/ Codesnippets

Genauigkeit von Sleep (timeGetDevCaps / timeBeginPeriod)

 

Sven
Bader
Seit einiger Zeit habe ich das Problem, dass &gettickcount und sleep nur noch auf ca. 16 ms genau arbeiten. In Kombination konnte ein Sleep 1 mit folgendem Code 0 oder sogar 31 ms ausgeben!
Declare start&
start& = &gettickcount
sleep 1
print (&gettickcount - start&)

Früher hatte ich das Problem nicht aber es scheint auch nicht unnormal zu sein. Entweder kam es durch ein Windows-Update oder eine BIOS-Einstellung (letztes werde ich noch validieren).

Mit timeBeginPeriod habe ich eine API-Funktion gefunden, welche die Auflösung von Sleep wieder auf zuverlässige 1 ms bringen kann. Der folgende Beispielquelltext verwendet Schleifen mit je 100 Durchläufen, da &gettickcount nach wie vor ungenau arbeitet.

Im Screenshot zeigt sich der Unterschied, vermutlich ist der noch vorhandene Fehler von 0.79 ms auf Schleife + API-Aufruf zurückzuführen.

Im besten Fall habt ihr auf eurem Rechner bei beiden Durchläufen das gleiche gute Ergebnis.


Declare  caps#, start&
Dim caps#,8'Timer Intervalle min/max auslesen
Decimals 2
Def timeGetDevCaps(2)  !"winmm","timeGetDevCaps"
Def timeBeginPeriod(1) !"winmm","timeBeginPeriod"
Def timeEndPeriod(1)   !"winmm","timeEndPeriod"
Window (%maxx * 0.5 - 250), (%maxy * 0.5 - 262) - 500,524
start& = &gettickcount

WhileLoop 100

    Sleep 1

EndWhile

Print "sleep 1 dauerte durchschnittlich: " + str$((&gettickcount - start&) * 0.01) + " ms"
timeGetDevCaps(caps#,8)'Auflösung des Timers anfragen (caps# =  min ms, max ms)
Print "\nSetze Timer-Auflösung auf kleinstmöglichen Wert: " +  str$(long(caps#,0)) + " ms \n"
timeBeginPeriod(long(caps#,0))'minimale Auflösung des Timers setzen, da auf manchen Systemen Sleep sonst nur 15ms genau ist!!
start& = &gettickcount

WhileLoop 100

    Sleep 1

EndWhile

Print "sleep 1 dauerte durchschnittlich: " + str$((&gettickcount - start&) * 0.01) + " ms"
timeEndPeriod(long(caps#,0))'zuvor gesetzte minimale Timer-Auslösung zurücksetzen
Dispose caps#
WaitInput

8 kB
Hochgeladen:02.02.2023
Ladeanzahl55
Herunterladen
 
02.02.2023  
 



Zum Quelltext


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

1.090 Betrachtungen

Unbenanntvor 0 min.
ScanMaster20.06.2024
Sven Bader11.08.2023
Wilfried Friebe28.05.2023
funkheld14.05.2023
Mehr...

Themeninformationen

Dieses Thema hat 1 Teilnehmer:

Sven Bader (1x)


Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie