AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Dauer einer Schleife in Sek. messen?

Ein Thema von Borschti · begonnen am 3. Apr 2008 · letzter Beitrag vom 4. Apr 2008
Antwort Antwort
Seite 1 von 2  1 2      
Borschti

Registriert seit: 1. Nov 2007
Ort: Marburg Lahn
235 Beiträge
 
Delphi 2007 Professional
 
#1

Dauer einer Schleife in Sek. messen?

  Alt 3. Apr 2008, 09:04
Hallo,

Ich möchte die Dauer einer Schleife in Sekunden messen, dazu speicher Ich die aktuelle Zeit vor dem Schleifeneintritt in eine Variable vom Typ TDateTime Time1 := Time; und nach dem die Schleife vorbei ist, wird wieder die derzeitige Zeit in einer Variable vom gleichen Typ gespeichert, Time2 := Time; .
Danach will ich die Differenz der beiden Zeiten mir der folgenden Funktion ermitteln:

Delphi-Quellcode:
function DateTimeDiff(date1, date2: TDateTime): string;
 var secs: integer;
     difference: real;
begin
 difference:=date2-date1;
 difference:=Frac(difference)*60;
 secs:=round(difference-Frac(difference));
 result:=IntToStr(secs)+' Sekunden';
end;
Habe mir die Funktion von Delphitreff kopiert und wenig bearbeitet weil Ich nur die Sekunden haben möchte.

Also mein Problem ist jetzt, dass mir nur Null ausgegeben wird, habe auch versucht mit sleep() die Schleife künstlich in die Länge zu ziehn aber mir wird trotzdem nur Null zurückgegeben.
Vielleicht kennt ja jemand eine bessere Funktion um die Differenz zu berechnen oder vielleicht hab ich mir auch einen Fehler in die Funktion eingebaut als Ich sie bearbeitet habe. oder man kann einfach nicht die Zeit zwischen Schleifenein- und austritt messen...

Viel zu viele mödliche Probleme

mfg
Alex
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Dauer einer Schleife in Sek. messen?

  Alt 3. Apr 2008, 09:07
Hai Borschti,

nehme für den "Start- und Endwert" lieber Delphi-Referenz durchsuchenGetTickCount. Die Differenz sind die die ms die vergangen sind.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Tyrael Y.

Registriert seit: 28. Jul 2003
Ort: Stuttgart
1.093 Beiträge
 
Delphi 2007 Professional
 
#3

Re: Dauer einer Schleife in Sek. messen?

  Alt 3. Apr 2008, 09:10
Wahrscheinlich liegt es daran, daß die Schleife weniger als eine Sekunden braucht, das führt zum Ergebnis 0.

Benutze GetTickCount.
Das ist millisekundengenau.

Am Anfang mit GetTickCount ersten Wert holen.
Nach der Schleife nochmal den Wert holen.

Zweiten Wert vom ersten abziehen und du hast deb Millisekundenunterschied.
Levent Yildirim
Erzeugung von Icons aus Bildern:IconLev
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Dauer einer Schleife in Sek. messen?

  Alt 3. Apr 2008, 09:12
MSDN-Library durchsuchenGetTickCount wäre da wohl geeigneter:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  StartTime: DWORD;
  EndTime: DWORD;
  i: Integer;
begin
  StartTime := GetTickCount;
  for i := 0 to 1000 do
    Sleep(10);
  EndTime := GetTickCount;
  ShowMessage(IntToStr((EndTime - StartTime) div 1000) + ' Sekunden');
end;
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Borschti

Registriert seit: 1. Nov 2007
Ort: Marburg Lahn
235 Beiträge
 
Delphi 2007 Professional
 
#5

Re: Dauer einer Schleife in Sek. messen?

  Alt 3. Apr 2008, 09:12
Danke für die schnellen Antworten, ich werds gleich mal ausprobieren
  Mit Zitat antworten Zitat
Borschti

Registriert seit: 1. Nov 2007
Ort: Marburg Lahn
235 Beiträge
 
Delphi 2007 Professional
 
#6

Re: Dauer einer Schleife in Sek. messen?

  Alt 3. Apr 2008, 09:23
Hat auf anhieb geklappt, danke nochmal
  Mit Zitat antworten Zitat
hathor
(Gast)

n/a Beiträge
 
#7

Re: Dauer einer Schleife in Sek. messen?

  Alt 3. Apr 2008, 20:09
Alles viel zu ungenau!

Guckst Du hier:

http://www.delphi-forum.de/viewtopic...ighlight=sleep
  Mit Zitat antworten Zitat
Benutzerbild von Fussball-Robby
Fussball-Robby

Registriert seit: 22. Okt 2007
Ort: Nähe Köln
1.063 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: Dauer einer Schleife in Sek. messen?

  Alt 3. Apr 2008, 20:20
Zitat von hathor:
Alles viel zu ungenau!
Guckst du QueryPerformanceCounter. Viel genauer als GetTickCount. Nachteil: Bin mir nicht sicher, aber ich glaube, das umrechnen in Sec bzw. MSec ist nicht möglich.

Mfg
Robert L.
Der folgende Satz ist richtig!
Der vorherige Satz ist falsch!

Paradox
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#9

Re: Dauer einer Schleife in Sek. messen?

  Alt 3. Apr 2008, 20:31
Zitat von hathor:
Alles viel zu ungenau!
Woher weißt du, wie genau er es braucht? Und wenn schon genau, dann wollen wir auch nur die Zeit, die der Code wirklich auf der CPU ausgeführt wird und nicht die Zeit die er auf CPU Zeit wartend verbringt. Oder was ist jetzt genau?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#10

Re: Dauer einer Schleife in Sek. messen?

  Alt 3. Apr 2008, 20:41
Zitat von Fussball-Robby:
Zitat von hathor:
Alles viel zu ungenau!
Guckst du QueryPerformanceCounter. Viel genauer als GetTickCount. Nachteil: Bin mir nicht sicher, aber ich glaube, das umrechnen in Sec bzw. MSec ist nicht möglich.

Mfg
Du liegst falsch. QueryPerformanceFrequency liefert dir die Auflösung für eine Sekunde.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 17:15 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