AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

cpu zeit einer schleife auslesen

Ein Thema von ferby · begonnen am 5. Jun 2008 · letzter Beitrag vom 6. Jun 2008
Antwort Antwort
Seite 1 von 2  1 2      
ferby

Registriert seit: 15. Aug 2004
Ort: Wien
841 Beiträge
 
Delphi 2010 Enterprise
 
#1

cpu zeit einer schleife auslesen

  Alt 5. Jun 2008, 02:13
Hallo,

wie kann man in Delphi herausfinden wieviel CPU Zeit eine bestimmte Schleife verbraucht?

also zb


procedure TForm1.Btn1Click(Sender: TObject);
begin
while z_temp.next<>NIl do
z_temp:=z_temp.next;

showmessage('Schleife hat ' + ?? + ' CPU Zeiteinheiten verbraucht');
end;


wer eine ahnung?


(Möchte nicht Zählen wie viel Zeit vergangen ist, zwischen vor und nach der Schleife, sondern wirklich die verbrauchte
CPU Zeit anzeigen lassen)

Ferby
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#2

Re: cpu zeit einer schleife auslesen

  Alt 5. Jun 2008, 02:16
Zitat von Luckie:
Die Forensuche sollte helfen: Hier im Forum suchenQueryPerformanceCounter.
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#3

Re: cpu zeit einer schleife auslesen

  Alt 5. Jun 2008, 08:52
mit QueryPerformanceCounter misst man auch nur die Zeit zwischen 2 Punkten. Dabei wird aber eben auch nicht berücksichtigt wenn andere Prozesse und Threads zwischenzeitlich Rechenzeit abbekommen. Somit bekommt man, je nach dem wie viel andere Prozesse laufen, verschiedene Ergebnisse.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
ferby

Registriert seit: 15. Aug 2004
Ort: Wien
841 Beiträge
 
Delphi 2010 Enterprise
 
#4

Re: cpu zeit einer schleife auslesen

  Alt 5. Jun 2008, 12:01
Hallo,

es muss doch eine Möglichkeit geben, unabhängig von anderen Prozessen zu messen...
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

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

Re: cpu zeit einer schleife auslesen

  Alt 5. Jun 2008, 12:21
Ich mach sowas immer mit AQTime
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
OregonGhost

Registriert seit: 8. Jun 2002
Ort: Lübeck
1.216 Beiträge
 
Delphi 3 Professional
 
#6

Re: cpu zeit einer schleife auslesen

  Alt 5. Jun 2008, 12:23
Unabhängig von anderen Prozessen geht nicht ohne weiteres. Wenn du aber hinreichend viele Tests machst (insbesondere bei sehr kurzen Funktioen wichtig), bekommst du trotzdem vergleichbare Ergebnisse. Profiler wie AQTime unterstützen dich dabei, dann musst du dich nicht um den Kleinkram kümmern.
Oregon Ghost
---
Wenn NULL besonders groß ist, ist es fast schon wie ein bisschen eins.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#7

Re: cpu zeit einer schleife auslesen

  Alt 5. Jun 2008, 12:35
Zitat von OregonGhost:
Unabhängig von anderen Prozessen geht nicht ohne weiteres.
Natürlichh geht das. Mit MSDN-Library durchsuchenGetThreadTimes kan nman die CPU-Zeit ermitteln die der Code im User mode bzw. im Kernel mode verbringt.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
OregonGhost

Registriert seit: 8. Jun 2002
Ort: Lübeck
1.216 Beiträge
 
Delphi 3 Professional
 
#8

Re: cpu zeit einer schleife auslesen

  Alt 5. Jun 2008, 16:18
Nun, wie hier zu lesen ist (und auch an diversen anderen Orten), ist auch GetThreadTimes aus verschiedenen Gründen nicht völlig unabhängig von anderen Threads. Auch hier wäre also eine hinreichende Zahl von Tests notwendig, und wenn die zu testende Funktion z.B. eine Wait-Funktion aufruft, stimmen die Zeiten erst recht nicht mehr und die Wartezeit ist auch noch besonders intensiv von anderen laufenden Prozessen und Threads beeinflusst.
Oregon Ghost
---
Wenn NULL besonders groß ist, ist es fast schon wie ein bisschen eins.
  Mit Zitat antworten Zitat
ferby

Registriert seit: 15. Aug 2004
Ort: Wien
841 Beiträge
 
Delphi 2010 Enterprise
 
#9

Re: cpu zeit einer schleife auslesen

  Alt 5. Jun 2008, 19:43
Hello,

wir müssen doch nur die Zeitdiverenz messen....

Gibt es in Delphi eine Funktion, die mir die Anzahl der Sekunden seit 1.1.1970 zurückliefert?
So wie die Time Funktione in C?
  Mit Zitat antworten Zitat
Cyf

Registriert seit: 30. Mai 2008
407 Beiträge
 
Lazarus
 
#10

Re: cpu zeit einer schleife auslesen

  Alt 5. Jun 2008, 21:00
Zitat von ferby:
Hello,

wir müssen doch nur die Zeitdiverenz messen....

Gibt es in Delphi eine Funktion, die mir die Anzahl der Sekunden seit 1.1.1970 zurückliefert?
So wie die Time Funktione in C?
Ich dachte das Ganze soll unabhängig ablaufen?
Die Zeitdifferenz wird davon beeinflusst, was "im Hintergrund" so noch abläuft, aber wenn doch ungenauere Werte reichen sollte, kannst du das hiermit (am besten mehrfach) austesten:

Delphi-Quellcode:
procedure TForm1.UngenauMessen;
var
  Zeit: Cardinal;
begin
  Zeit := GetTickCount;

  //Befehlesfolge deren Zeitdauer bestimmt werden soll
  sleep(2000);
  //

  Button1.Caption:= (IntToStr(GetTickCount - Zeit) + ' ms');
end;
oder genauer, aber rechenintensiver:

Delphi-Quellcode:
procedure TForm1.GenauMessen; //genauer aber mehr Ressourcenverbauch
var
  a, b, c: Int64;
begin
  QueryPerformanceFrequency(a);
  QueryPerformanceCounter(b);

  //Befehlesfolge deren Zeitdauer bestimmt werden soll
  sleep(2000);
  //

  QueryPerformanceCounter(c);

  Button1.Caption:= Format('%.3f ms',[(c - b) * 1000 / a]); //Ausgabe in ms
end;
Hoffe das ist hilfreich.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 22:53 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