Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

12.11.2006, 20:02

aktuelle zeit auf Millisekunden genau

Hi

gibt es eine funktion, die mir die aktuelle zeit auf millisekunden genau ausgibt? ich progge nämlich grad an einer festen spielgeschwindigkeit.

Mfg
Eldarion72

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

2

12.11.2006, 20:06

timeGetTime
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

3

12.11.2006, 20:44

k, funzt alles klar.

rklaffehn

Treue Seele

Beiträge: 267

Wohnort: Braunschweig

  • Private Nachricht senden

4

13.11.2006, 12:25

Oder evtl. noch besser mit QueryPerformanceCounter anfreunden.

Eine Übersicht gibt es hier bei MSDN.
God is real... unless declared integer.
http://www.boincstats.com/signature/user_967277_banner.gif

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

5

13.11.2006, 12:53

Es ging glaube ich um Millisekunden und nicht genaue Taktzahl ^_^. Die Angabe in Zyklenanzahl ist natürlich wesendlich genauer :)
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

rklaffehn

Treue Seele

Beiträge: 267

Wohnort: Braunschweig

  • Private Nachricht senden

6

13.11.2006, 14:01

Genau kann ja nicht schaden. Ausserdem kann man das auch in "Sekunden" umrechnen.

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
float computeTime ()
{
  LARGE_INTEGER frequency;
  LARGE_INTEGER counter;

  if (QueryPerformanceCounter (&counter) && QueryPerformanceFrequency (&frequency))
  {
    return float (counter.QuadPart) / float (frequency.QuadPart);
  }

  return -1.0f;
}


Das geht zwar auch geschickter, aber das Beispiel sollte erstmal erklären, was ich meine. Ausserdem umschifft man so evtl. gleich auch Probleme, die bei Multi-Core Systemen auftreten können, wenn man nicht aufpasst.

Gruss,
Rainer
God is real... unless declared integer.
http://www.boincstats.com/signature/user_967277_banner.gif

7

13.11.2006, 17:07

.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »FOGX« (15.09.2010, 16:17)


Black-Panther

Alter Hase

Beiträge: 1 443

Wohnort: Innsbruck

  • Private Nachricht senden

8

13.11.2006, 17:36

Zitat von »"FOGX"«

Noch genauer: Assembler-Anweisung RDTSC. :D
(Vllt. greift QueryPerformanceCounter aber auch darauf zurück.)


Noch genauer als die Taktzyklen wird mans nicht bekommen... ;)
stillalive studios
Drone Swarm (32.000 Dronen gleichzeitig steuern!)
facebook, twitter

rklaffehn

Treue Seele

Beiträge: 267

Wohnort: Braunschweig

  • Private Nachricht senden

9

13.11.2006, 17:49

Ich hatte das eigentlich nur erwähnt, weil die DirectX Dokumentation explizit darauf hinweist, dass man besser mit QueryPerformanceCounter arbeiten soll, weil das (aus dem Kopf wiedergegeben)

(1) die genaueste Methode ist, ohne gleich auf Assembler zurückzugreifen 8)
(2) auf Multi-CPU/Core Systemen am wenigsten Probleme macht.

Praktisch setzen sie in ihrer eigenen Timer Klasse aus DXUT auch noch eine Thread-Affinity, so dass die Zeitanfrage sicher auch immer auf dem selben CPU-Kern abläuft.

Gruss,
Rainer

In der DirectX Doku zu finden unter: Game Timing and Multicore Processors
God is real... unless declared integer.
http://www.boincstats.com/signature/user_967277_banner.gif

koschka

Community-Fossil

Beiträge: 2 862

Wohnort: Dresden

Beruf: Student

  • Private Nachricht senden

10

13.11.2006, 18:04

RDTSC - Read Time Stamp Counter

sollte nicht benutzt werden da es

(1) nicht standardisiert ist (nicht jede CPU hat so ein Register)
(2) nicht Multicore tauglich ist.

Wie schon gesagt, sollte man lieber QueryPerformanceCounter vom Betriebssystem nutzen.

Werbeanzeige