Re: GetTickCount



Hallo DoDi,

"Hans-Peter Diettrich" <DrDiettrich1@xxxxxxx> schrieb im
Newsbeitrag news:6pquliF9fcpnU1@xxxxxxxxxxxxxxxxxxxxx

Hubert Seidel schrieb:

Die Doku von GetTickCount sagt bei mir:
The GetTickCount retries the number of milliseconds that have
elapsed
since Windows was started.

Daran dürfte sich seit MSDOS nicht viel geändert haben, außer daß man

Doch: Zu MSDOS-Zeiten gab es kein GetTickCount von Windows ;-)

früher[tm] die Ticks noch selbst in Millisekunden umrechnen mußte. Für
Zeitmessungen gibt es aber inzwischen genauere Quellen, bis hin zu den
PerformanceCountern (wie auch in der Doku erwähnt ;-)

Da es nicht wirklich viele Timer-Quellen im PC gibt, bin ich mir
ziemlich sicher das der Counter welcher mit QueryPerformanceCounter
ausgelesen wird, durch den gleichen Timer wie GetTickCount gefüttert
wird.
Der mit QueryPerformanceFrequency ermittelte Wert ist nicht zufällig
ein Vielfaches von 1193180 bzw. 3579545.
Vor ein paar Jahren hatte ich mit cli (bei >=NT/W2k u.s.w nur bei ring0)
die Counter "stoppen" können. Meinen Erkenntnissen nach wird x
mal pro Sekunde (ich meine je nach System x= (18.2?) 400 oder 1000) ein
Interrupt aufgerufen und ein oder mehrere interne Zähler aktualisiert.
Wenn nun QueryPerformanceCounter oder GetTickCount aufgerufen wird,
dann wird zum einen der Interne Zähler ausgelesen, zum anderen
der Zählerstand vom PIT ausgelesen und der Zwischenwert aufaddiert.
(Bei GetTickCount natürlich mit WrapAround-Logic)
Zumindest bleibe ich bei der Meinung, bis mir plausibel und vor allem
nachvollziehbare andere Variante gezeigt bekomme.
Die Taktfrequenz der CPU (mit RDTSC) schwankt viel zu sehr
da die Quarze hier zum einen viel zu große toleranzen haben,
zum anderen bei Laptops häufig herunter geschaltet wird um
Stom zu sparen. Mit einem 1000ms-Timer und RDTSC kann man tatsächlich
die aktuelle CPU-Frequenz-Schwankungen im großen Maße beobachten.
(Wie gesagt, nicht mein normalen Desktop-PCs sichtbar)
Ok. Bei >=XP weis ich nicht ob es evtl. bereits andere Möglichkeiten
gibt.

mfg.
Herby

--
http://www.hubert-seidel.de


.



Relevant Pages

  • RE: GetTickCount problem P4 hyperthread
    ... >> QueryPerformanceCounter ... >> and QueryPerformanceFrequency instead of GetTickCount. ... >> Vladimir Nesterovsky ... > computer to be in the same condition like the client, and the bug was ...
    (microsoft.public.dotnet.languages.vc)
  • Re: how to measure time which expire between two events
    ... Note that GetTickCount counts the amount of ... the values are fairly untrustworthy in terms of time spent in your code. ... QueryPerformanceCounter counts time in your thread. ... So the time returned by GetTickCount can't be trusted ...
    (microsoft.public.vc.mfc)
  • Zeitmessen: QueryPerformanceCounter vs GetTickCount
    ... Ich möchte den Zeitverbrauchn einer Routine messen und bekomme bei der ... GetTickCount 2516 ms?! ... Ganz oben steht: ... Sollte QueryPerformanceCounter eine besondere ...
    (de.comp.lang.delphi.misc)
  • Re: Negative difference between QueryPerformanceCounter values
    ... GetTickCount (in milliseconds) ... one millisesecond) is in fact completely random, causing inconsistent timing ... QueryPerformanceCounter works on their platform. ... Use GetTickCount, that's known to work. ...
    (microsoft.public.pocketpc.developer)

Loading