AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi GetTickCount genauer als GetLocalTime?
Thema durchsuchen
Ansicht
Themen-Optionen

GetTickCount genauer als GetLocalTime?

Ein Thema von Viktorii · begonnen am 20. Nov 2008 · letzter Beitrag vom 21. Nov 2008
Antwort Antwort
Viktorii

Registriert seit: 19. Jul 2007
358 Beiträge
 
#1

GetTickCount genauer als GetLocalTime?

  Alt 20. Nov 2008, 10:26
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.
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#2

Re: GetTickCount genauer als GetLocalTime?

  Alt 20. Nov 2008, 13:54
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
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.168 Beiträge
 
Delphi 12 Athens
 
#3

Re: GetTickCount genauer als GetLocalTime?

  Alt 20. Nov 2008, 14:03
MSDN-Library durchsuchenGetTickCount hat in aktuellen Windowsversionen (glaub ich) eine 16ms-Intervall.

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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Noedel

Registriert seit: 7. Aug 2008
204 Beiträge
 
Delphi 7 Professional
 
#4

Re: GetTickCount genauer als GetLocalTime?

  Alt 20. Nov 2008, 14:45
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
  Mit Zitat antworten Zitat
Flips

Registriert seit: 17. Feb 2005
Ort: Sankt Wendel
491 Beiträge
 
Delphi 7 Professional
 
#5

Re: GetTickCount genauer als GetLocalTime?

  Alt 20. Nov 2008, 15:08
Zitat von Noedel:
das problem kann mit
getperformancefrequency (was auf 1/1.000.000 sekunde genau arbeitet)
behoben werden
Wobei das doch auch nur theoretische Idealwerte sind oder?
Philipp F.
  Mit Zitat antworten Zitat
Noedel

Registriert seit: 7. Aug 2008
204 Beiträge
 
Delphi 7 Professional
 
#6

Re: GetTickCount genauer als GetLocalTime?

  Alt 20. Nov 2008, 15:11
das mag wohl sein
wenn man jetzt nen prozessor mit ner taktung von unter 1 MHz hat, dann geht das schon nicht mehr auf

nein ich weiß was du meinst
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.168 Beiträge
 
Delphi 12 Athens
 
#7

Re: GetTickCount genauer als GetLocalTime?

  Alt 21. Nov 2008, 10:02
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:
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]...
Also im Pinzip ... je größer das Messintervall (hier Dauer von Sleep), desto genauer der Wert.

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%.
Angehängte Dateien
Dateityp: exe project1_283.exe (19,0 KB, 7x aufgerufen)
Dateityp: dpr project1_569.dpr (1,6 KB, 6x aufgerufen)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:28 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz