![]() |
GetTickCount genauer als GetLocalTime?
Hallo.
Ich möchte die Zeitdifferenz möglichst genau zwischen zwei Ereignissen ermitteln. Da ich auch die Uhrzeit der Ereignisse brauche, speichere ich mir diese mit GetLocalTime weg. Nun kann ich natürlich durch Subtraktion die Zeitdifferenz zwischen zwei Ereignissen ermitteln. Würde ich genauere Ergebnisse erhalten wenn ich mit GetTickCount gespeicherte Werte subtrahiere? Wo habe ich eine besser Zeitauflösung? Habe leider nichts dazu gefunden. Vielen Dank. |
Re: GetTickCount genauer als GetLocalTime?
Google sagt mir, beide sind auf Millisekunden genau.
Wobei das natürlich eine Genauigkeit suggeriert, die nicht gegeben ist. Auf normalen Windowssystemen kommt dein Prozess vll. alle 40ms mal kurz an die CPU, du kannst also auch nur so genau messen ;) |
Re: GetTickCount genauer als GetLocalTime?
![]() Die Auflösung der Typen ist zwar 1ms, aber der Windows-Timer wird nur alle 16ms aktualisiert. und laut MSDN scheint GetLocalTime auch über diesen Timer zu laufen, also haben Beide wohl die selbe Aktualisierungsrate. |
Re: GetTickCount genauer als GetLocalTime?
ich habe mal gehört, dass die letzte stelle von gettickcount ungenau ist, d.h.
bei zb. 1234 ms kannst du von eine abweichung von 10ms haben o.O das problem kann mit getperformancefrequency (was auf 1/1.000.000 sekunde genau arbeitet) behoben werden :) |
Re: GetTickCount genauer als GetLocalTime?
Zitat:
|
Re: GetTickCount genauer als GetLocalTime?
das mag wohl sein :)
wenn man jetzt nen prozessor mit ner taktung von unter 1 MHz hat, dann geht das schon nicht mehr auf :D :D nein ich weiß was du meinst |
Re: GetTickCount genauer als GetLocalTime?
Liste der Anhänge anzeigen (Anzahl: 2)
Im Angang ein Programm, womit man mal testen kann, wie genau der Timer läuft.
PS: Sleep ist ebenfalls ungenau, da es intern wiederrum GetTickCount verwendet. Bei mir ist das rausgekommen:
Code:
Also im Pinzip ... je größer das Messintervall (hier Dauer von Sleep), desto genauer der Wert.
no Sleep [5s]
638835954x 0ms 120x 15ms 200x 16ms = 638836274x ~0.0000078267ms Sleep(0) [5s] 12381852x 0ms 120x 15ms 200x 16ms = 12382172x ~0.0004038064ms Sleep(50) [10s] 19x 46ms 129x 47ms 24x 62ms 25x 63ms = 197x ~50.7614213198ms Sleep(995) [60s] 12x 984ms 7x 985ms 42x 1000ms = 61x ~995.1311475410ms Sleep(1000) [60s] 60x 1000ms = 60x ~1000.0000000000ms Beenden mit [Enter]... Bei meinen ~16ms hat man also bei einer Messdauer von 160s (16*10) eine Ungenauigkeit von ~10% und bei 1000ms (~ 16*63) nur noch ~1,6%. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:01 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz