AGB  ·  Datenschutz  ·  Impressum  







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

Timer viel zu ungenau?

Ein Thema von Lefko · begonnen am 4. Aug 2003 · letzter Beitrag vom 15. Aug 2003
Antwort Antwort
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#1

Re: Timer viel zu ungenau?

  Alt 8. Aug 2003, 00:12
@MrSpock, am genauesten ist heutzutage der Real Time Counter, RDTSC. Dieser wird mit jedem Takt der externen CPU Taktfrequenz erhöht. Alle neueren CPU's unterstützen diesen:

Delphi-Quellcode:
function IsRDTSCPresent: Boolean; assembler;
// check is CPUID Instruction present
// extracted from my DEC Part I (Copyright), and litte bit expanded to support TSC Flag directly
asm
       PUSHFD
       PUSHFD
       POP EAX
       MOV EDX,EAX
       XOR EAX,0040000h
       PUSH EAX
       POPFD
       PUSHFD
       POP EAX
       XOR EAX,EDX
       JZ @@1
       PUSHFD
       POP EAX
       MOV EDX,EAX
       XOR EAX,0200000h
       PUSH EAX
       POPFD
       PUSHFD
       POP EAX
       XOR EAX,EDX
@@1: POPFD
       TEST EAX,EAX
       JZ @@2
       MOV EAX,1
       DW 0A20Fh // CPUID
       TEST EDX,010h // test RDTSC flag in Features
       SETNZ AL
@@2:
end;

function RDTSC: Int64; // sollte UInt64 sein
asm
       DW 0310Fh // RDTSC Opcode
end;

procedure Test;
var
  Start,Cylces: Int64;
begin
  if IsRDTSCPresent then
  begin
    Start := RDTSC;
    DoAnything;
    Cycles := RDTSC - Start;
  end;
// Cycles ~ Taktzyklen der CPU die DoAnything benötigt hat
end;
Falls dich noch die Umwandlung von Cycles in Millisekunden bzw. Nanosekunden interessiert, poste ich sie.

Gruß Hagen
  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 04:51 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 by Thomas Breitkreuz