![]() |
Zeitmessung mit dem RealTimeCounter
Hallo,
die Zeitmessung mit dem RealTimeCounter ( ![]() Die Funktion QueryPerformancecounter liefert falsche Ergebnisse (je nach CPU-Auslastung). Kennt jemand eine Lösung ? tb99de |
Re: Titel: Zeitmessung mit dem RealTimeCounter
Hi,
vorweg: Das Titel: in Deinem Titel ist wohl recht überflüssig. Nimm das doch mal raus ;-) Anschließend suche hier mal nach ![]() ...:cat:... |
Re: Titel: Zeitmessung mit dem RealTimeCounter
ich habe die Überschrift einfach aus eurer Code-Library kopiert.
Statt auf die Suchfunktion zu Verweisen solltet ihr vieleicht eurer Code-Library überarbeiten. tb99de |
Re: Titel: Zeitmessung mit dem RealTimeCounter
Hallo tb99de,
zunächst einmal ein herzliches Willkommen in der Delphi-PRAXiS! Zitat:
Zitat:
Falls Du Dich für die Prozessorauslastung interessieren solltest, findest Du im Suchergebnis durch sakuras Link einen Thread, in dem genau dieses Problem erfolgreich gelöst worden ist. Dies jedoch ohne Verwendung der API-Funktion QueryPerformanceCounter, zu der ![]() Zitat:
|
Re: Zeitmessung mit dem RealTimeCounter
Also nochmal Hallo zusammen und danke für den Empfang :wink:
Ich benutze die Funktionen QueryPerformanceFrequency(f) und QueryPerformanceCounter(c1) um eine sehr genaue Zeitmessung durchzuführen. Start: QueryPerformanceFrequency(f); QueryPerformanceCounter(c1); Stop: QueryPerformanceCounter(c2); sek := (c2 - c1) / f; Läuft auch wunderbar, nur ist die Zeit nicht korrekt wenn man einen Intel Processor mit HT hat. Das Ergebnis schwankt mit der Prozessorauslastung. Bsp: Messung über 1s-Timer im Leerlauf = 0.52 sek. --> falsch Vollast = 1 sek --> richtig Habe deshalb euren Code ausprobiert um zu sehen ob dieser funjtioniert. Tut's aber auch nicht Ergebnis = -1; Selbst wenn ich den Process und den Thread nur auf einem Prozessor lege (SetMask sowiewo) sind die Ergebnisse falsch. Wäre schön Ihr wüßtet eine Lösung. tb99de |
Re: Zeitmessung mit dem RealTimeCounter
Ich habe hier auch einen P4-HT, aber ich kann Dein Problem nicht nachvollziehen. Bist Du Dir sicher, daß Du keinen Denkfehler machst? :gruebel:
...:cat:... |
Re: Zeitmessung mit dem RealTimeCounter
Mit
![]() ![]() Zitat:
![]() Zitat:
Mit Multiprozessorsystemen hatte ich im Zusammenhang mit QueryPerformanceCounter bisher keine Schwierigkeiten. Ein Prozessor mit HT steht mir leider nicht zur Verfügung. EDIT: Kleine Korrektur im zweiten Zitat |
Re: Zeitmessung mit dem RealTimeCounter
Hm, interessant, aber wer nutzt schon Windows XP :angle: Ist aber gut zu wissen, wie dem auch sei, was hat die Suche und der Test von GetThreadTimes ergeben?
...:cat:... |
Re: Zeitmessung mit dem RealTimeCounter
GetThreadTimes:
Nicht viel. Bei einer Thread+User-Time vom 100ms pro Sek. messe ich 0.5s pro Sek. Bei einer Thread+User-Time vom 0.9-1s pro Sek. (Vollast) messe ich genau 1s pro Sek. Denkfehler fast ausgeschlossen. Die Software ist schon älter und zigfach eingesetzt. Habe zwei Rechner: P2 650MHz - QueryPerformanceFrequency = 3.579.545 (paßt zu eurer Code-Lib.) --> OK P4 HT 3.02 GHz - QueryPerformanceFrequency = 3.056.560.000 --> f Übrigens "Some programs, mostly games, run incorrectly on the subject platforms [WinXP with HT]" bezieht sich hauptsächlich auf die Verwendung von 32 Bit Integerwerten mit Vorzeichen. Man muß 64 Bit ohne Vorzeichen benutzen. Ich hoffe euch fällt noch etwas ein. tb99de |
Re: Zeitmessung mit dem RealTimeCounter
Sorry, hatte Probleme die Message zu senden.
Lösche Bitte einer die zwei überflüssigen. tb99de |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:11 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