Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Abarbeitungszeit einer Prozedure messen??? (https://www.delphipraxis.net/45785-abarbeitungszeit-einer-prozedure-messen.html)

dj_momo 12. Mai 2005 10:40


Abarbeitungszeit einer Prozedure messen???
 
Ich habe eine Prozedur, die bis jetzt einwandfrei gelaufen ist, ein wenig modernisiert und habe jetzt den Verdacht, dass diese jetzt langsamer läuft als vorher. Bin mir nicht sicher, aber überprüfen möchte ich es trotzdem.
Wie kann ich die Abarbeitungszeit einer Prozedur messen? Sicher hat jemand schon so etwas gemacht und es muss eigentlich nicht so schwer sein mit einem Timer oder so. Ich würde nur gerne wissen, ob es eine bestimme Technik oder einer fertigen Algorithmus dafür gibt, der genaue Messwergebnisse (bis in Msc.) liefert.

Sharky 12. Mai 2005 10:53

Re: Abarbeitungszeit einer Prozedure messen???
 
Hai dj_momo,

merke dir am Anfang der Prozedure mit Delphi-Referenz durchsuchenGetTickCount die "Zeit" und mache das selbe noch einmal am Ende der Procedure. Die differenz ist dann die Zeit im ms die benötigt wurde.

MagicAndre1981 12. Mai 2005 11:02

Re: Abarbeitungszeit einer Prozedure messen???
 
Hier gibts auch was interessantes zu dem Thema.

RavenIV 12. Mai 2005 11:03

Re: Abarbeitungszeit einer Prozedure messen???
 
stichwort MMTimer.
mit dieser unit bekommst du annähernd realtime-timer.
dann kannst du dir die time vor und nach der ausführung berechnen.

wenn du hilfe dazu brauchst, dann schick mir eine PN

gruessle

dj_momo 12. Mai 2005 11:04

Re: Abarbeitungszeit einer Prozedure messen???
 
Danke! Probiere ich gleich aus! :zwinker:

Bernhard Geyer 12. Mai 2005 11:20

Re: Abarbeitungszeit einer Prozedure messen???
 
Zitat:

Zitat von dj_momo
Ich habe eine Prozedur, die bis jetzt einwandfrei gelaufen ist, ein wenig modernisiert und habe jetzt den Verdacht, dass diese jetzt langsamer läuft als vorher. Bin mir nicht sicher, aber überprüfen möchte ich es trotzdem.

Falls du öfter sowas benötigst oder auch die Auswertung auf Zeilenebene benötigst, so schau dir mal AQTime an. Damit habe ich schon einige Performancebremsen gefunden.

alzaimar 12. Mai 2005 19:01

Re: Abarbeitungszeit einer Prozedure messen???
 
Oder du nimmst den hochauflösenden Timer, der in jedem Windows eingebaut ist:
Delphi-Quellcode:
unit csPerformance;

interface
Type
  TTimerID = 0..10;

Var
  CounterFrequency : Int64;

Procedure StartTimer (aTimer : TTimerID);
Function StopTimer (aTimer : TTimerID) : Real;
implementation
uses Windows;
Var
  Tmr : Array [TTimerID] Of Int64;

Procedure StartTimer (aTimer : TTimerID);
Begin
  QueryPerformanceCounter(Tmr[aTimer]);
End;

Function StopTimer (aTimer : TTimerID) : Real;
Var
  t : Int64;

Begin
  QueryPerformanceCounter (t);
  Result := (t - Tmr [aTimer])/CounterFrequency
End;

initialization
  QueryPerformanceFrequency(CounterFrequency);
  if CounterFrequency = 0 then CounterFrequency := 1;
end.


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