![]() |
Geschwindigkeit einer Funktion messen
Hallo
Kennt jemand eine Lösung bzw. ist es überhaupt möglich, die Ausführungsgeschwindigkeit einer Funktion zu messen? |
Re: Geschwindigkeit einer Funktion messen
Nicht ohne Einfluss auf diese zu nehmen
|
Re: Geschwindigkeit einer Funktion messen
Eine direkte Funktion gibt es nicht, aber mit Hilfe von
![]() ![]() ...:cat:... |
Re: Geschwindigkeit einer Funktion messen
Zitat:
...:cat:... |
Re: Geschwindigkeit einer Funktion messen
Zitat:
|
Re: Geschwindigkeit einer Funktion messen
Auch noch zu erwähnen: Mit
![]() |
Re: Geschwindigkeit einer Funktion messen
Falls es öfter benötigt wird um sein Programm schneller zu machen: AQTime ist sein Geld wert!
|
Re: Geschwindigkeit einer Funktion messen
Zitat:
|
Re: Geschwindigkeit einer Funktion messen
Zitat:
Wenn mir der Proviler sagt das 90% der Rechenzeit an 5 Quellcodezeilen verbraten werden ist es egal ob diese um den Faktor 5 verlangsamt wurden. Und erheblich verlangsamt wird es nur wenn der Line-Profiler verwendet wird. |
Re: Geschwindigkeit einer Funktion messen
Müsste es so nicht klappen????
Delphi-Quellcode:
procedure TForm1.Go;
var start,stop,zeit : integer; begin start := GetTickCount; //Hier deine Funktion stop := GetTickCount; zeit := stop-start; ShowMessage('Gebrauchte Zeit '+ IntToStr(zeit) + ' ms'; end; |
Re: Geschwindigkeit einer Funktion messen
Zitat:
Abgesehen davon: vielleicht will ers ja auch im Programm ausgeben :gruebel: |
Re: Geschwindigkeit einer Funktion messen
Genau die richtigen Hinweise. Danke an alle.
Funktioniert prima. |
Re: Geschwindigkeit einer Funktion messen
Zitat:
|
Re: Geschwindigkeit einer Funktion messen
Zitat:
![]() |
Re: Geschwindigkeit einer Funktion messen
OK. Hier der Quellcode. Wundert Euch bitte nicht, warum ich ständig PChar in String konvertiere. Der Grund ist der, daß ich mit der Torque Game Engine arbeite und die komplett in C++ geschrieben wurde. Da ich aber C++ nur dann anfasse, wenn unbedingt nötig, nutze ich lieber mit der 3D Engine eine zusätzliche DLL, die ich in Delphi schreibe. Daher die Umwandlung.
Die Zeitmessung ist deswegen interessant, da KI und Wegfindung recht aufwändige Berechnungen sind. Und ich will halt wissen, wie schnell die Algorithmen ablaufen.
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var Start, Stop, Frequenzy: Int64; i:integer; name_p:PChar; name_s:string; begin Listbox1.clear; QueryPerformanceFrequency(Frequenzy); QueryPerformanceCounter(Start); for i:=1 to StrToInt(Edit1.text) do Begin name_p:='Ich mag Delphi'; name_s:=StrPas(name_p); listbox1.Items.Add(IntToStr(i)+': '+name_s); End; try QueryPerformanceCounter(Stop); ShowMessage(FormatFloat('0.00', (Stop - Start) * 1000 / Frequenzy) + ' Millisekunden'); finally end; end; |
Re: Geschwindigkeit einer Funktion messen
Das hat Daniel doch schon erwähnt, Robert. Wenn mich meine Erinnerung nicht trügt, wurde hier auch kürzlich ein Problem mit QueryPerformanceCounter erwähnt, das auftritt, wenn der Thread die CPU wechselt.
|
Re: Geschwindigkeit einer Funktion messen
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:27 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-2025 by Thomas Breitkreuz