AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Zeitmessung mit dem RealTimeCounter
Thema durchsuchen
Ansicht
Themen-Optionen

Zeitmessung mit dem RealTimeCounter

Ein Thema von tb99de · begonnen am 14. Jan 2004 · letzter Beitrag vom 22. Jan 2004
Antwort Antwort
Seite 2 von 2     12   
Michael Leyhe

Registriert seit: 1. Dez 2003
Ort: Sprockhövel
101 Beiträge
 
Delphi 7 Enterprise
 
#11

Re: Zeitmessung mit dem RealTimeCounter

  Alt 14. Jan 2004, 15:31
Ich habe hier einen Zeitmessungscode der die Zeit mit hilfe der Systemzeit bestimmt:

Delphi-Quellcode:
 var :t1 , t2 :real;

t1 := time; /// Startzeit
... /// Die Aufgabe

t2 := time; /// Endzeit

t.text := IntToStr (round((t2 - t1)*24*60*60*100); /// die Zeit wird in sek. ausgegeben
Wenn du die Zeit in Millisekunden haben willst, dann musst du noch durch 1000 Teilen;
Michael
Wer weis vll. ist das Leben ja ein Integer, wenn man negativ genug denkt wird es irgendwann positiv.
  Mit Zitat antworten Zitat
tb99de

Registriert seit: 14. Jan 2004
17 Beiträge
 
#12

Re: Zeitmessung mit dem RealTimeCounter

  Alt 15. Jan 2004, 07:45
Danke für die Anregung aber sowohl die systemzeit (time) als auch der 1ms genaue GetTimeClick werden nur ca. alle 55ms refrescht.
Ich muss aber genaueste Verzögerungen im ms Bereich erzeugen.
Somit habe ich nur die Möglichkeit über QueryPerformanceFrequency.

Mich macht auch die hohe QueryPerformanceFrequency = 3.056.560.000 bei meinem P4 HT 3.02 GHz stuzig.
Also entweder liegt es an der hohen Taktfrequenz oder an HT.

Über Hilfe wäre ich echt dankbar.
tb99de
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#13

Re: Zeitmessung mit dem RealTimeCounter

  Alt 15. Jan 2004, 10:18
Zitat:
Mich macht auch die hohe QueryPerformanceFrequency = 3.056.560.000 bei meinem P4 HT 3.02 GHz stuzig.
Also entweder liegt es an der hohen Taktfrequenz oder an HT.
Wieso? das sind fast genau 3.02 GHz, somit arbeitet auf deinem Prozessor das Windows OS direkt mit dem "Real Time Stamp Counter" = RTSC der CPU. Alle neueren CPU's entahlten einen internen 64 Bit Zaähler der JEDEN Taktzyklus um 1 erhöht wird. Somit muß die CPU Taktfrequenz gleich QueryPerformanceFrequency sein.

Falls das OS in QueryPerformanceCounter KEINEN korrektiven Code enthält dann sind deine gemessenen Werte sogar richtiiger als die von GetTickCount, es sei denn die CPU wird von extern angehalten !

Gruß Hagen
  Mit Zitat antworten Zitat
tb99de

Registriert seit: 14. Jan 2004
17 Beiträge
 
#14

Re: Zeitmessung mit dem RealTimeCounter

  Alt 15. Jan 2004, 11:30
Das Problem ist ja das QueryPerformanceCounter keinen korrekten Wert enthält.

Ich habe die böse Vermutung, dass QueryPerformanceCounter die Taktzyklen EINER HT-CPU liefert.
Past ja auch ungefähr, mein Ergebniss ist Faltor 1.9 falsch.

Nur der Wert von QueryPerformanceCounter um so richtiger wird, je höher die CPU-Auslastung ist.

Ich müßte evtl. die QueryPerformanceCounter von beiden HT-CPU's lesen können.


tb99de
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#15

Re: Zeitmessung mit dem RealTimeCounter

  Alt 15. Jan 2004, 12:38
Wenn zwei CPU's a 3 GHz drinnen sind dann muß QueryPerformanceFrequency(), basierend auf dem RTSC, eben 3GHz zurückgeben. Allerdings muß QueryPerformanceCounter() eben 2 mal 3GHz liefern da ja 2 CPU's getaktet werden.
Zumindestens so könnte ich mir den Faktor 1.9 erklären.

Aber Schwankungen im RTSC dürften nicht auftreten, da selbst wenn die CPU im Halt Modus ist, die Zähler weiterlaufen.

Gruß Hagen
  Mit Zitat antworten Zitat
tb99de

Registriert seit: 14. Jan 2004
17 Beiträge
 
#16

Re: Zeitmessung mit dem RealTimeCounter

  Alt 15. Jan 2004, 15:25
Übrigens etwas sehr interessantes was scheinbar hierzu gehört.

Die CPU-Taktfrequenzanzeige im MotherboardMonitor 5.3.x schwank ebenso mit unterschiedlicher CPU-Auslastung.
Und das Hardwaretool WCPUID zeigt unterschiedliche SystemClock an. Mal 133 MHz und Faktor 23 oder 255 MHz mit Faktor 12.

Ist das so bei HT-CPU's ?

tb99de
  Mit Zitat antworten Zitat
tb99de

Registriert seit: 14. Jan 2004
17 Beiträge
 
#17

Re: Zeitmessung mit dem RealTimeCounter

  Alt 22. Jan 2004, 08:00
Hallo,

Problem gelöst.

Die Ursache liegt nicht in der HT-CPU sondern in der SpeedStep-Technologie con Intel.
Das Enregieschema muß auf Dauerbetrieb.
Hatte vorher max. Leistung und dennoch schaltete die CPU die Taktfrequenz je nach AUslastung um.

tb99de
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 23:48 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