PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : high resolution timer


Chris Lux
2007-04-28, 09:01:05
hi,
ich bin wiedermal auf der suche nach hoch auflösenden timern für c-c++. unter windows nutze ich immer die performance counter. nun soll der code aber portabel werden (linux, windows, 32 und 64bit...).

ich habe auch wiedermal das timer timing bei nvidia rausgekramt [1]. ganz speziell in dem text dort wird gesagt, dass bei speziellen anwendungen das autauschen von GetTickCount() durch was schnelleres ein speedup da war. seltsam nur, dass bei den tests mit dem programm GetTickCount das schnellste ist bei mir (Intel C2D)...

meine frage nun, gibt es timing methoden, welche mir mindestens microsekunden auflösung (besser noch nanosekunden) bieten und auf allen plattformen verfügbar sind?

[1] http://developer.nvidia.com/object/timer_function_performance.html

Thomas(:
2007-04-28, 09:24:46
Sowas bekommst du nie hin auf einem BS wie Windows – Linux dürfte das können mit Echtzeiterweiterungen. Du hast ja kein Einfluss darauf, wann der Sheduler dich die CPU wirklich benutzen lässt. Wenn du mal den PC richtig auslastest und dann nochmal testest bei hoher Auflösung werden die Ergebnisse sicher auch schlechter.

Endorphine
2007-04-28, 09:57:48
Hast du schon das Potenzial vom HPET ausgeschöpft? http://www.intel.com/technology/architecture/hpetspec.htm

Demirug
2007-04-28, 10:19:56
Hast du schon das Potenzial vom HPET ausgeschöpft? http://www.intel.com/technology/architecture/hpetspec.htm

Wie passt den das zu den Anforderungen?

Chris Lux
2007-04-28, 12:35:18
Sowas bekommst du nie hin auf einem BS wie Windows – Linux dürfte das können mit Echtzeiterweiterungen. Du hast ja kein Einfluss darauf, wann der Sheduler dich die CPU wirklich benutzen lässt. Wenn du mal den PC richtig auslastest und dann nochmal testest bei hoher Auflösung werden die Ergebnisse sicher auch schlechter.
mir geht es wirklich nur um genaue timing methoden und derzeit bekommt man nur unter windows mit den performance countern eine so hohe auflösung unter linux glaube ich mit gettimeofday kommt man auf microsekunden... ich frage, weil ich einen möglichst einheitlichen weg suche sachen zu messen und daher versuche ich schon die anforderungen recht hoch zu halten.

Thomas(:
2007-04-28, 13:24:26
Willst du messen wie lange etwas auf dem PC ausgeführt wurde? Dann frag doch das Betriebsystem nach der CPU-Zeit die dem Prozess zugeteilt wurde, das ist genau. Ansonsten sag doch mal um was es geht.

Asmodeus
2007-04-28, 13:59:11
Da hier Nvidia ins Spiel gebracht wurde, wäre denn GL_EXT_timer_query eine Möglichkeit? Dort liegt die Granularität zumindest im Bereich von Nanosekunden.

Gruß, Carsten.

Chris Lux
2007-04-28, 14:46:50
Da hier Nvidia ins Spiel gebracht wurde, wäre denn GL_EXT_timer_query eine Möglichkeit? Dort liegt die Granularität zumindest im Bereich von Nanosekunden.
jap timer query werde ich einsetzen, wenn es um sachen geht in der OpenGL pipeline.

der grund ist eigentlich recht einfach, ich möchte eine saubere portable timer lösung haben für 3d applikationen (performance messung, zeit usw...). dabei möchte ich aber genauer sein, als msec auflösung.