Delphi-PRAXiS

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

PierreB 28. Aug 2005 11:27


Benötigte Zeit messen
 
Moinsen ihr :hi:

Ich steh grad bissl auf'm Schlauch:
Wie kann man die Zeit, die z.B. eine Funktion braucht, messen ?

Kleines Beispiel: Ich hab ne Funktion die einfach zwei Zahlen addiert, nun würde ich gerne Wissen wie lange die Funktion dafür gebraucht hat (Minuten/Sekunden/Millisekunden). Macht man sowas einfach mit nem Timer oder wie ?

Thx schonmal,

FriFra 28. Aug 2005 11:33

Re: Benötigte Zeit messen
 
Delphi-Quellcode:
var
  StartTime: TDateTime;
  Duration: TDateTime;
begin
  StartTime := Now;

  { Dein Code }

  Duration := Now - StartTime;
  Form1.LabelHH.Caption := FormatDateTime('hh', Duration);
  Form1.LabelMM.Caption := FormatDateTime('nn', Duration);
  Form1.LabelSS.Caption := FormatDateTime('ss', Duration);
end;

PierreB 28. Aug 2005 11:38

Re: Benötigte Zeit messen
 
Moin FriFra,

vielen Dank erstmal, aber leider werden ja jetzt die Millisekunden nicht angezeigt, was eigentlich das wichtigste wäre...

FriFra 28. Aug 2005 11:43

Re: Benötigte Zeit messen
 
Wo ist das Problem, die kannst Du doch genauso aus der Variablen Duration auslesen :roll: ... Schau Dir mal die möglichen Format-strings für FormatDateTime an :!:

sECuRE 28. Aug 2005 11:49

Re: Benötigte Zeit messen
 
Hi,

mess es doch via GetTickCount, das sind Milisekunden (seit Systemstart):
Delphi-Quellcode:
var TicksBefore:integer;
begin
TicksBefore:=GetTickCount;

{ DEIN CODE }

ShowMessage('Das Ausführen dauerte '+IntToStr(GetTickCount - TicksBefore)+' Ticks');
end;
cu

PierreB 28. Aug 2005 11:49

Re: Benötigte Zeit messen
 
Zitat:

Zitat von FriFra
Wo ist das Problem, die kannst Du doch genauso aus der Variablen Duration auslesen :roll: ... Schau Dir mal die möglichen Format-strings für FormatDateTime an :!:

Ja, dass habe ich auch getan, doch neben den Datumsfunktionen gibt es nur noch das:
Zitat:

h Zeigt die Stunde ohne führende Null an (0-23).
hh Zeigt die Stunde mit führender Null an (00-23).
n Zeigt die Minute ohne führende Null an (0-59).
nn Zeigt die Minute mit führender Null an (00-59).
s Zeigt die Sekunde ohne führende Null an (0-59).
ss Zeigt die Sekunde mit führender Null an (00-59).
Aber nichts von Millisekunde....

FriFra 28. Aug 2005 11:53

Re: Benötigte Zeit messen
 
fff zeigt die Millisekunden...

PierreB 28. Aug 2005 11:58

Re: Benötigte Zeit messen
 
Zitat:

Zitat von FriFra
fff zeigt die Millisekunden...

fff oder ff scheint Delphi 3 nicht zu kennen, bei folgendem Code zeigt er "fff" im Label an.
Delphi-Quellcode:
 Form1.Label4.Caption := FormatDateTime('fff', Duration);
@Secure: Vielen Dank, so gehts. :-)

Jelly 28. Aug 2005 20:32

Re: Benötigte Zeit messen
 
1. Arbeitet die Now Funktion nicht genau genug, die würd ich für so Sachen nicht nehmen. Hat nur, glaub ich ne Genauigkeit von 1/13 Sekunde.

2. Gettickcount ist die bessere Variante, die liefert dir in Millisekunden die System Uptime. aber ich denke mal, um 2 Zahlen zu addieren, kommst du damit auch nicht weit, weil das wohl nicht in ms messbar ist. Wenn da 1 rauskommen würde, dann ist dieser Wert sehr mict Vorsicht zu geniessen. Was heisst denn 1 ms... Das können 0,5ms sein, das können 1,49ms sein... Dein Wert schwankt also um +/- 0,5ms, also hats du nur eine Genauigkeit von 50%.

alzaimar 28. Aug 2005 20:47

Re: Benötigte Zeit messen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Es gibt einen sehr genauen Zeitmesser unter Windows. Hier ist er gekapselt. Der Code ist so banal, das es peinlich ist, aber es klappt ganz gut. Ganz genau ist es allerdings nicht, weil es ja auch ein paar microsekunden dauert, die Zeit selbst zu ermitteln.
Aufruf mit:
Delphi-Quellcode:
StartTimer (ID);
...
Showmessage (Format ('Hat %6.6f sekunden gedauert',[StopTimer(ID)]));


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:08 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