Autor Beitrag
beastofchaos
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 247
Erhaltene Danke: 4



BeitragVerfasst: Sa 08.01.11 21:13 
Hallo Leute,
Habe mich mal umgeschaut, aber ich finde in meinem Delphi-Buch, bei Google, Wikipedia und in diesem Forum keine direkte Definition/Erklärung von QueryPerformance-Funktionen.
Ich lerne erst sein ein paar Monaten Delphi und basteln schon an einem Minigolfprogramm für meine Prüfung. Nach anger Zeit und viel Hilfe in diesem Forum, hab ich fast alles bei einander und muss das ganze nur noch zu einem vollen Programm stricken ;) Leider ist ein wichtiger Teil meines Programmes für mich unverständlich, da es mir jemand geschickt hat und ich es nicht selber gemacht habe.

Ein Teil der unverständlichen Prozeduren/Funktionen ist folgende, die die vergangene Zeit liest und für die nächste Bewegegung der Kugel gebraucht wird ( -> Timebased Movements ):

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
procedure TMainForm.FormCreate(Sender: TObject);
var
begin
  if not [b]QueryPerformanceFrequency(Frequency)[/b] then
    Application.Terminate;
  [b]QueryPerformanceCounter(CalcTime);[/b]
  .
  .
  .
end;


procedure TMainForm.CalcTimestep;
var
  CurrTime: int64;
begin
  [b]QueryPerformanceCounter(CurrTime);[/b]
  Timestep := (CurrTime - CalcTime) / Frequency;
  CalcTime := CurrTime;
end;


procedure TMainForm.IdleHandler(Sender: TObject; var Done: Boolean);
begin
  CalcTimestep;
 .
 .
 .
end;




Was mir auch schon aufgefallen ist, dass die Prozedur "CalcTimestep" selber die vergangene Zeit vom Programmstart("Form.Create") aus berechnet. Aber welche Zeit liest er mit der Funktion QueryPerformanceCounter. Die Zeit vom Programmstart/Pcstart an diesem Zeitpunkt?
Und als zweites verstehe ich nicht, was "QueryPerformaceFrequenz()" anstellt - Was ist hier direkt gemeint mit Frequenz?

Freundliche Grüße, Thomas alias beast ;)
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Sa 08.01.11 21:33 
Warum schaust du denn nicht einfach einmal in die Doku:
msdn.microsoft.com/e...644905(v=vs.85).aspx

Wie genau diese Frequenz zustande kommt, kommt auf die verwendete Hardware an. Je nachdem ist die Frequenz mehr oder weniger nahe an der Prozessortaktfrequenz.

Für diesen Beitrag haben gedankt: beastofchaos
beastofchaos Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 247
Erhaltene Danke: 4



BeitragVerfasst: So 09.01.11 02:04 
Hab ich schon einmal gesehen. Hab mir jetzt doch die Mühe gemacht und versucht, das Englisch zu verstehen ( ich bin nicht gut in Engl. ), aber ich weiß leider nicht, was genau "QueryPerformanceCounter" zählt. Welche Zeit - etwa die Zeit von "Delphi-Urknall"(30.12.1899)? Oder nur vom Systemstart? :D
Das ist die einzige wichtige Frage noch... :/

Grüße, Thomas alias beast
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 09.01.11 02:13 
user profile iconbeastofchaos hat folgendes geschrieben Zum zitierten Posting springen:
Das ist die einzige wichtige Frage noch... :/
Das weiß man nicht. Das hängt von der Implementierung in der verwendeten Hardware ab. Wofür ist das dir denn wichtig? :gruebel:
beastofchaos Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 247
Erhaltene Danke: 4



BeitragVerfasst: So 09.01.11 02:34 
Naja, ich befürchte, dass in der Präsentation, einer der 3 Prüfer mich dann über diese Prozedur abfragt am Ende und ich dahcte, das wäre vll wichtig. Ich sag einfach mal:" Und mit diesem Befehl wird die Systemzeit gelesen und in CalcTime/CurrTime gespeicht :p Dann muss ich nur noc hdie Mathematik in dem doofen Programm ganz vcerstehen und das selbst dann ausbauen ;)
Danke schonmal, deer Thread ist ja dann somit abgeschlossen
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 09.01.11 02:40 
Nun, in der Regel sollte es die Anzahl der Prozessortakte seit Systemstart sein. Aber es muss eben nicht so sein. Mehr dazu:
en.wikipedia.org/wiki/Time_Stamp_Counter

Für diesen Beitrag haben gedankt: beastofchaos
Bergmann89
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1742
Erhaltene Danke: 72

Win7 x64, Ubuntu 11.10
Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
BeitragVerfasst: So 09.01.11 02:46 
Hey,

ich denke, wenn du deinem Prüfer sagst, was die Funktion macht, bzw wozu sie verwendet wird sollte reichen. Und wenn er doch nachfragt, dann kannst du ihm ja sagen, das diese Funktion vom System bereit gestellt wird und du nix über die genaue Funktionsweiße gefunden hast (gesucht hast du ja). Das dürfte er dir dann nicht als Minuspunkt anrechnen, man kann ja schließlich nicht alles wissen. Genauso könnte er dich fragen welche Subroutinen ausgeführt werden um ein Fenster zu erstellen, denn da benutzt du ja auch eins ;)

MfG Bergmann.

_________________
Ich weiß nicht viel, lern aber dafür umso schneller^^

Für diesen Beitrag haben gedankt: beastofchaos
beastofchaos Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 247
Erhaltene Danke: 4



BeitragVerfasst: So 09.01.11 11:40 
Gut! danke, ist sicher auch unwarscheinlich, dass sie danach fragen :p
hathor
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: So 09.01.11 15:52 
Erzählt mal einem Neuling keinen Quatsch!

RDTSC hat mit der CPU-Frequenz nichts zu tun!

Die CPU-Frequenz kann man laut INTEL so auslesen:
www.delphi-forum.de/....php?p=530257#530257

www.delphi-forum.de/...&highlight=rdtsc