![]() |
Ausgabe der Zeit (in ms) welche eine Procedur benötigt
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:
Habe es bereits mit den Delphi-Funktionen getTime und DateToStr(now) versucht.
StopTime.start;
try Proceudre TuIrgendWas finally ShowMessage(StopTime.Stop) end; 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 |
Re: Ausgabe der Zeit (in ms) welche eine Procedur benötigt
Probier doch mal die Funktion GetTickCount. Die Liefert die die Zeit seit Systemstart im 1/1000 sec.
|
Re: Ausgabe der Zeit (in ms) welche eine Procedur benötigt
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; |
Re: Ausgabe der Zeit (in ms) welche eine Procedur benötigt
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; |
Re: Ausgabe der Zeit (in ms) welche eine Procedur benötigt
Zitat:
Delphi-Quellcode:
Kommt allerdings erst zu tragen, wenn das System fuer knapp 50 Tage laeuft und die Kapazitaet von nem DWord ausgereizt ist ;)
if endZeit > startZeit then
endZeit := endZeit - startZeit else endZeit := (high(cardinal) - startZeit) + endZeit; greetz Mike |
Re: Ausgabe der Zeit (in ms) welche eine Procedur benötigt
danke für die Hinweise auf getTickCount, hab gar nicht gewusst dass es diese Funktion gibt.
Damit kann ich mein Problem lössen. THX |
Re: Ausgabe der Zeit (in ms) welche eine Procedur benötigt
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 ![]() Evtl. wäre ![]() ![]() Übrigens: Für das Überlaufproblem nach ~50 Tagen gibt es natürlich eine Lösung: ![]() Gruß xaromz |
Re: Ausgabe der Zeit (in ms) welche eine Procedur benötigt
49,7 :angel2: , obwohl meistens die Programmteile nicht solange laufen, vorallem nicht wenn jemand die Zeit in ms benötigt ;)
|
Re: Ausgabe der Zeit (in ms) welche eine Procedur benötigt
Hallo,
Zitat:
Zitat:
Gruß xaromz |
Re: Ausgabe der Zeit (in ms) welche eine Procedur benötigt
Jop, aber bevor man in 50 Tagen den Fehler sucht, ne ;)
Übrigens habe ich ja totalen Humbug geschrieben:
Delphi-Quellcode:
so ist das richtiger.
if endZeit > startZeit then endZeit:= endZeit - STARTZEIT
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:22 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz