Italia
Fonte/ 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, presumibilmente 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
Downloadcounter59
Download
 
02.02.2023  
 



Zum Quelltext


Topictitle, max. 100 characters.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Topic-Options

1.204 Views

Untitledvor 0 min.
ScanMaster20.06.2024
Sven Bader11.08.2023
Wilfried Friebe28.05.2023
funkheld14.05.2023
Di più...

Themeninformationen

Dieses Thema hat 1 subscriber:

Sven Bader (1x)


Admins  |  AGB  |  Applications  |  Autori  |  Chat  |  Informativa sulla privacy  |  Download  |  Entrance  |  Aiuto  |  Merchantportal  |  Impronta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Giochi  |  Cerca  |  Support

Ein Projekt aller XProfaner, die es gibt!


Il mio XProfan
Private Notizie
Eigenes Ablageforum
Argomenti-Merkliste
Eigene Beiträge
Eigene Argomenti
Zwischenablage
Annullare
 Deutsch English Français Español Italia
Traduzioni

Informativa sulla privacy


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