AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Ausgabe der Zeit (in ms) welche eine Procedur benötigt
Thema durchsuchen
Ansicht
Themen-Optionen

Ausgabe der Zeit (in ms) welche eine Procedur benötigt

Ein Thema von eagle1985 · begonnen am 13. Sep 2006 · letzter Beitrag vom 13. Sep 2006
Antwort Antwort
Seite 1 von 2  1 2      
eagle1985

Registriert seit: 14. Mär 2006
11 Beiträge
 
#1

Ausgabe der Zeit (in ms) welche eine Procedur benötigt

  Alt 13. Sep 2006, 10:56
Hallo zusammen,

ich benötige eine Funktion welche es ermöglicht anzuzeigen wie lange eine Procedure/Funktion läuft.

habe mir so etwas vorgestellt:
Code:
StopTime.start;
try
  Proceudre TuIrgendWas
finally
  ShowMessage(StopTime.Stop)
end;
Habe es bereits mit den Delphi-Funktionen getTime und DateToStr(now) versucht.
Hatte leider keinen erfolg, da anscheinend nur die Uhrzeit auf Sekunden ebene ausgegeben wird.

Hat jemand eine andere Idee wie dies zu bewerkstellen ist.
Kann man in Delphi Timestamps machen wie in Unix oder SQL welche in ms arbeiten?
Dan bräuchte ich die beiden TimeStamps nur von einander zu Subtrahieren und hätte die Zeit in ms

greez eagle
  Mit Zitat antworten Zitat
runner

Registriert seit: 13. Jan 2006
36 Beiträge
 
#2

Re: Ausgabe der Zeit (in ms) welche eine Procedur benötigt

  Alt 13. Sep 2006, 11:04
Probier doch mal die Funktion GetTickCount. Die Liefert die die Zeit seit Systemstart im 1/1000 sec.
  Mit Zitat antworten Zitat
hsg

Registriert seit: 24. Apr 2006
Ort: Wustermark
354 Beiträge
 
Delphi 10.3 Rio
 
#3

Re: Ausgabe der Zeit (in ms) welche eine Procedur benötigt

  Alt 13. Sep 2006, 11:05
Die Funktion GetTickCount() aus dem Win-API hilft dir dabei:
Delphi-Quellcode:
procedure Test();
var
  start : Cardinal;
  dauer : Cardinal;
begin
  start := GetTickCount();
  // Mach was langes
  dauer := GetTickCount() - start;
end;
  Mit Zitat antworten Zitat
Vjay

Registriert seit: 2. Dez 2003
Ort: Berlin/Eschede
481 Beiträge
 
Delphi 7 Professional
 
#4

Re: Ausgabe der Zeit (in ms) welche eine Procedur benötigt

  Alt 13. Sep 2006, 11:06
Schau mal in die Hilfe zu "getTickCount", aber achtung dies ist nicht die benötigte Prozessorzeit, sondern dann die reale Zeit.

also, da ich gerade gute Laune habe:

Delphi-Quellcode:
var
 startZeit, endZeit: cardinal;
begin
 startZeit:= getTickCount;

// hier mach, was du machen musst

 
 endZeit:= getTickCount;
 if endZeit > startZeit then endZeit:= endZeit -getTickCount
 else endZeit:= 0; // kann selten vorkommen, grund siehe windows-hilfe
end;
Wer später bremst ist eher tot.
  Mit Zitat antworten Zitat
Benutzerbild von JasonDX
JasonDX
(CodeLib-Manager)

Registriert seit: 5. Aug 2004
Ort: München
1.062 Beiträge
 
#5

Re: Ausgabe der Zeit (in ms) welche eine Procedur benötigt

  Alt 13. Sep 2006, 11:17
Zitat von Vjay:
Delphi-Quellcode:
if endZeit > startZeit then endZeit:= endZeit -getTickCount
else endZeit:= 0; // kann selten vorkommen, grund siehe windows-hilfe
Na ja, wenn wir schon ruecksicht darauf nehmen, dann auch richtig
Delphi-Quellcode:
if endZeit > startZeit then
  endZeit := endZeit - startZeit
else
  endZeit := (high(cardinal) - startZeit) + endZeit;
Kommt allerdings erst zu tragen, wenn das System fuer knapp 50 Tage laeuft und die Kapazitaet von nem DWord ausgereizt ist

greetz
Mike
Mike
Passion is no replacement for reason
  Mit Zitat antworten Zitat
eagle1985

Registriert seit: 14. Mär 2006
11 Beiträge
 
#6

Re: Ausgabe der Zeit (in ms) welche eine Procedur benötigt

  Alt 13. Sep 2006, 11:17
danke für die Hinweise auf getTickCount, hab gar nicht gewusst dass es diese Funktion gibt.
Damit kann ich mein Problem lössen.

THX
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#7

Re: Ausgabe der Zeit (in ms) welche eine Procedur benötigt

  Alt 13. Sep 2006, 11:26
Hallo,

vielleicht noch ein Hinweis: GetTickCount ist nicht so hochauflösend, wie das Ergebnis glauben macht, da die Auflösung vom Systemtimer abhängig ist. Dieser arbeitet aber meist mit weit geringerer Auflösung als 1 ms. Mit MSDN-Library durchsuchenGetSystemTimeAdjustment lässt sich dieser Wert herausfinden.
Evtl. wäre MSDN-Library durchsuchenQueryPerformanceCounter zusammen mit MSDN-Library durchsuchenQueryPerformanceFrequency besser. Die erreichte Auflösung geht ja nach PC bis zur Prozessorfrequenz.

Übrigens: Für das Überlaufproblem nach ~50 Tagen gibt es natürlich eine Lösung: MSDN-Library durchsuchenGetTickCount64!

Gruß
xaromz
I am a leaf on the wind - watch how I soar
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.033 Beiträge
 
Delphi 12 Athens
 
#8

Re: Ausgabe der Zeit (in ms) welche eine Procedur benötigt

  Alt 13. Sep 2006, 11:44
49,7 , obwohl meistens die Programmteile nicht solange laufen, vorallem nicht wenn jemand die Zeit in ms benötigt
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#9

Re: Ausgabe der Zeit (in ms) welche eine Procedur benötigt

  Alt 13. Sep 2006, 11:51
Hallo,
Zitat von himitsu:
49,7 ,
Klugscheisser .
Zitat von himitsu:
obwohl meistens die Programmteile nicht solange laufen, vorallem nicht wenn jemand die Zeit in ms benötigt
Das Problem ist ja nicht, dass ein Programmteil so lange läuft, sondern, dass das System genau zwischen dem ersten und dem zweiten Messpunkt 49,7 Tage gelaufen ist. Dann ist der erste Wert z. B. 4 Mrd, und der zweite 10.

Gruß
xaromz
I am a leaf on the wind - watch how I soar
  Mit Zitat antworten Zitat
Vjay

Registriert seit: 2. Dez 2003
Ort: Berlin/Eschede
481 Beiträge
 
Delphi 7 Professional
 
#10

Re: Ausgabe der Zeit (in ms) welche eine Procedur benötigt

  Alt 13. Sep 2006, 12:02
Jop, aber bevor man in 50 Tagen den Fehler sucht, ne

Übrigens habe ich ja totalen Humbug geschrieben:

if endZeit > startZeit then endZeit:= endZeit - STARTZEIT so ist das richtiger.
Wer später bremst ist eher tot.
  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 05:36 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