Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Zeit messen (https://www.delphipraxis.net/46947-zeit-messen.html)

SleepyMaster 3. Jun 2005 13:39


Zeit messen
 
Hi ihrs...

Ich hab grade ein Problem damit, wie ich die Zeit messen kann...
Das Problem ist, dass ich NICHT auf GetTickCount zurückgreifen kann, da die Zeiten von zwei Verschiedenen Rechnern verglichen werden müssen.

Hat jemand eine ELEGANETE ;) Lösung dafür?

Vielen Dank

Master_BB 3. Jun 2005 14:02

Re: Zeit messen
 
hm versteh das problem zwar noch nicht ganz.
zeitmessen ist einfach
jetzt jetzt "now" 2 mal nehemn und differenz bilden.

und wenn du die zeit von 2 verschiedenen rechnern vergleichen willst
würde das heißen bei jedem einmal mit dem befehl now die zeit zu holen
und dan von beiden zeiten die differenz zu bilden.
typ wäre TDateTime;

malo 3. Jun 2005 14:04

Re: Zeit messen
 
Zitat:

Zitat von SleepyMaster
Hat jemand eine ELEGANETE ;) Lösung dafür?

Kommt drauf an, WAS du genau messen musst ;)

SleepyMaster 3. Jun 2005 14:16

Re: Zeit messen
 
Das mit dem Now hab ich auch schon Probiert...
Jedoch ist das Ergebniss auch ein TDateTime ich brauche aber die Differenz in Sekunden...

SleepyMaster 3. Jun 2005 14:32

Re: Zeit messen
 
ok... Hab eine Lösung, die sogar auf die Milisekunde genau ist...
Delphi-Quellcode:
var
  Form1: TForm1;
  starttime: TTimeStamp;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  starttime := DateTimeToTimeStamp(now);
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var
  TimeStamp: TTimeStamp;
begin
  TimeStamp := DateTimeToTimeStamp(now);
  label1.Caption := inttostr((TimeStamp.Date - starttime.Date)*24*60*60*1000 + TimeStamp.Time - starttime.Time);
end;

Marphy 3. Jun 2005 14:35

Re: Zeit messen
 
Hallo Schläfer :mrgreen:,
schau mal in meinem Thread "Kompressionsverfahren" nach und lade dir den Source runter. Mittels der Unit "PrecTimer" kannst du ultra-genaue Zeitmessungen durchführen (eine Millisekunde sind da schon Welten) :zwinker: Der Urprungscode stammt aus dem Visual Basic 6 Kochbuch (von Doberenz & Kowalski - die beiden Herren sind euch höchstwahrscheinlich ein Begriff...), ich hab det Janze dann in Delphi umgeschrieben :???:

Gruß, Marco

SleepyMaster 3. Jun 2005 14:50

Re: Zeit messen
 
soooooo verpennt bin ich im Moment auch nicht:
Zitat:

da die Zeiten von zwei Verschiedenen Rechnern verglichen werden müssen.
Und der PerformanceCounter funktioniert über den Takt der CPU - nicht über die Systemuhr. :roll:

Soweit ich weiß, sind Millisekunden die kleinste Einheit, die die Systemuhr wiedegeben kann. Von daher bin ich damit schon ganz zufrieden :zwinker:

malo 3. Jun 2005 14:52

Re: Zeit messen
 
Zitat:

Zitat von SleepyMaster
ok... Hab eine Lösung, die sogar auf die Milisekunde genau ist...

:warn: Sei vorsichtig mit dem TTimer, da dieser eben NICHT auf die Millisekunde genau ist. Das liegt daran, dass der TTimer in einem Thread steht, der eine recht niedrige Priorität hat (also nur einen begrenzten Teil Rechenleistung kriegt). Der DXTimer ist jedoch genauer (über 1 Millisekunde genau) ;)

brechi 3. Jun 2005 14:53

Re: Zeit messen
 
Zitat:

Zitat von Marphy
Mittels der Unit "PrecTimer" kannst du ultra-genaue Zeitmessungen durchführen
Gruß, Marco

das ergebnis wird zwar genauer ausgegeben ist aber genauso ungenau ;)

es kommt nicht drauf an wieviele nachkommastellen da sind sondern wieviele andere threads zwischenzeitlich arbeiten.
um eine routine zu testen und zu schaun ob die schneller ist sollte man deshalb alle anderen threadsd einfrierren und RDTSC (assembler ticks) nehmen
soll nur eine auf > 200msek getestet werden kannste gettickccount bzw QPC nehmen
QPC im bereich 20msek bis 200mseksollte QPC genommen werden
< 20msek geben beide total beschissenen werte zurück die net wirklich stimmen

zum RDTSC verfahren:
http://www.delphi-forum.de/viewtopic...ighlight=rdtsc

SleepyMaster 3. Jun 2005 14:59

Re: Zeit messen
 
@malo: Hast schon recht... ABER: wenn du mal genau hinguckst siehst du, dass ich den Timer nur benutze um einen Intervall zu erzeugen in dem die Zeit aktuallisiert wird.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:38 Uhr.
Seite 1 von 2  1 2      

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