Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Benötigte Zeit Für Proceduren & Funktionen... (https://www.delphipraxis.net/33757-benoetigte-zeit-fuer-proceduren-funktionen.html)

Kedariodakon 12. Nov 2004 09:31


Benötigte Zeit Für Proceduren & Funktionen...
 
Gibt es eine bessere und genauere Lösung für das Berechnen der Berechnungszeit einer Berechnung, als GetTickCout vorher und nachher auszulesen?


Bye

Stevie 12. Nov 2004 09:33

Re: Benötigte Zeit Für Proceduren & Funktionen...
 
Guck mal nach den Funktionen Delphi-Referenz durchsuchenQueryPerformanceCounter und Delphi-Referenz durchsuchenQueryPerformanceFrequency.

Kedariodakon 12. Nov 2004 09:42

Re: Benötigte Zeit Für Proceduren & Funktionen...
 
In der OH find ich die nicht...

Soll ich wo anders nach suchen? :gruebel:


Bye

jim_raynor 12. Nov 2004 09:45

Re: Benötigte Zeit Für Proceduren & Funktionen...
 
entweder in der MSDN oder bei google oder hier im Forum.

Es gab/gibt ein Tool gpProfiler oder so ähnlich. Damit konnte man recht einfach solche Auswertungen machen. Das Tool ist allerdings dafür da Performanceschwachstellen zu finden und nicht für eine Allgemeine Zeitmessung

Stevie 12. Nov 2004 09:48

Re: Benötigte Zeit Für Proceduren & Funktionen...
 
Zitat:

Zitat von Kedariodakon
In der OH find ich die nicht...

Soll ich wo anders nach suchen? :gruebel:


Bye

:shock: Huch, sind ja überhaupt nicht in der OH!
Na dann: MSDN-Library durchsuchenQueryPerformanceCounter und MSDN-Library durchsuchenQueryPerformanceFrequency

shmia 12. Nov 2004 09:50

Re: Benötigte Zeit Für Proceduren & Funktionen...
 
Mit der Unit JclCounter aus der JCL geht das recht einfach.
Es handelt sich um eine Kapselung von QueryPerformanceCounter und QueryPerformanceFrequency.
Hier ein Beispiel:
Delphi-Quellcode:
var
   counterA, counterB : TJclCounter;
begin
   StartCount(counterA);
   BerechnePrimzahlen(1, 5000);
   counterA.Stop;

   StartCount(counterB);
   BerechnePrimzahlen_Fast(1, 5000);
   counterB.Stop;

   ShowMessageFmt('A:%f B:%f', [CounterA.ElapsedTime, CounterB.ElapsedTime]);
   
   StopCount(counterA);
   StopCount(counterB);
end;

Kedariodakon 12. Nov 2004 10:08

Re: Benötigte Zeit Für Proceduren & Funktionen...
 
Gut werd da mal in der MSDN nachschaun...

Aso Nochwas:
Ich hab da im Netz was gefunden zum Thema Zeitmessung....

Oder Besser ein Codeschnippsel:

Delphi-Quellcode:
   Function RDTSC: Int64;
   Asm
      RDTSC
   End;
:gruebel:

Was macht das? Ich bin kein Stück ASM bewandert....

Auf jedenfall gibt es mit eine Zahl aus, dass seh ich selber :zwinker:
Aber was is das für eine Zahl?


Bye

Tubos 12. Nov 2004 10:10

Re: Benötigte Zeit Für Proceduren & Funktionen...
 
Das ist ungefähr dasselbe wie QueryPerformanceFrequency in Assembler.

Allerdings funktioniert es nur auf Intel-Prozessoren (der AMD stammt von Intel ab, vielleicht geht es da auch?).

Sharky 12. Nov 2004 10:11

Re: Benötigte Zeit Für Proceduren & Funktionen...
 
Zitat:

Zitat von Kedariodakon
...Aber was is das für eine Zahl?..

Hai Kedariodakon,

guckst Du hier ;-)

Sharky 12. Nov 2004 10:15

Re: Benötigte Zeit Für Proceduren & Funktionen...
 
Ha,

wenn ich bei Tante Google nach "RDTSC" suche und nur ergebnisse auf deutsch haben möchte führt mich der erste Link zu einer Seite von luckie und einem Code von negaH

Bernhard Geyer 12. Nov 2004 10:22

Re: Benötigte Zeit Für Proceduren & Funktionen...
 
Zitat:

Zitat von Kedariodakon
Gibt es eine bessere und genauere Lösung für das Berechnen der Berechnungszeit einer Berechnung, als GetTickCout vorher und nachher auszulesen?

Falls Du im größeren Umfang Performancemessungen durchführen willst und ein paar € ausgeben kannst, würde ich dir AQTime empfehlen.
Kann Zeitanalysen auf Zeilen/Funktionsebenen/Aufruf-Statistiken/.... Und die Bedienung ist (fast) kinderleicht. Programm mit TD32-Debuginfos kompilieren, laden in AQTime, Anaylse auf Funktionsebene stellen und Programm durchlaufen lassen und Ergebnisse genießen.

Kedariodakon 12. Nov 2004 10:27

Re: Benötigte Zeit Für Proceduren & Funktionen...
 
Zitat:

Zitat von Sharky
Ha,

wenn ich bei Tante Google nach "RDTSC" suche und nur ergebnisse auf deutsch haben möchte führt mich der erste Link zu einer Seite von luckie und einem Code von negaH

hmm ich habe nach "ASM + RDTSC" gesucht und nix tolles gefunden... :wall:

Aber danke für die Info :thumb:

Bye

raziel 12. Nov 2004 10:35

Re: Benötigte Zeit Für Proceduren & Funktionen...
 
Nur so als allgemeiner ASM Tip:
Bei mir unbekannten ASM Befehlen ist meine erste Anlaufstelle grundsätzlich http://nasm.sourceforge.net/doc/html/nasmdoci.html

raziel

Kedariodakon 12. Nov 2004 10:47

Re: Benötigte Zeit Für Proceduren & Funktionen...
 
Zitat:

Zitat von raziel
Nur so als allgemeiner ASM Tip:
Bei mir unbekannten ASM Befehlen ist meine erste Anlaufstelle grundsätzlich http://nasm.sourceforge.net/doc/html/nasmdoci.html

raziel

Danke, der Link ist gut :thumb:


Nun weiß ich wenigstes was es macht...

Zitat:

Zitat von http://nasm.sourceforge.net/doc/html/nasmdocb.html#section-B.4.273
B.4.273 RDTSC: Read Time-Stamp Counter

RDTSC ; 0F 31 [PENT]

RDTSC reads the processor's time-stamp counter into EDX:EAX.

Ist nur noch die Frage, was ein "Processor time-stamp counter" ist und was bei mehr als einem Prozessor passiert :zwinker:
Ich glaub ich sollte mich mal ein Kleinwenig mit ASM beschäftigen...

Und gleichmal eine Dumme Frage zu: Wenn ich eine Delphi-ASM Function schreibe, is das Result immer das EAX Register?


Bye


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