AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Abarbeitungszeit einer Prozedure messen???
Thema durchsuchen
Ansicht
Themen-Optionen

Abarbeitungszeit einer Prozedure messen???

Ein Thema von dj_momo · begonnen am 12. Mai 2005 · letzter Beitrag vom 12. Mai 2005
Antwort Antwort
dj_momo

Registriert seit: 6. Mai 2005
6 Beiträge
 
#1

Abarbeitungszeit einer Prozedure messen???

  Alt 12. Mai 2005, 11:40
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.
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

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

Re: Abarbeitungszeit einer Prozedure messen???

  Alt 12. Mai 2005, 11:53
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.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Benutzerbild von MagicAndre1981
MagicAndre1981

Registriert seit: 4. Jun 2004
Ort: Nordhausen
2.214 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Abarbeitungszeit einer Prozedure messen???

  Alt 12. Mai 2005, 12:02
Hier gibts auch was interessantes zu dem Thema.
André
  Mit Zitat antworten Zitat
Benutzerbild von RavenIV
RavenIV

Registriert seit: 12. Jan 2005
Ort: Waldshut-Tiengen
2.875 Beiträge
 
Delphi 2007 Enterprise
 
#4

Re: Abarbeitungszeit einer Prozedure messen???

  Alt 12. Mai 2005, 12:03
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
Klaus E.
Linux - das längste Text-Adventure aller Zeiten...
Wer nie Linux mit dem vi konfiguriert hat, der hat am Leben vorbei geklickt.
  Mit Zitat antworten Zitat
dj_momo

Registriert seit: 6. Mai 2005
6 Beiträge
 
#5

Re: Abarbeitungszeit einer Prozedure messen???

  Alt 12. Mai 2005, 12:04
Danke! Probiere ich gleich aus!
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.202 Beiträge
 
Delphi 10.4 Sydney
 
#6

Re: Abarbeitungszeit einer Prozedure messen???

  Alt 12. Mai 2005, 12:20
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.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#7

Re: Abarbeitungszeit einer Prozedure messen???

  Alt 12. Mai 2005, 20:01
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.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Antwort Antwort


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 00:37 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