Was entspricht dem QueryPerformanceCounter von Windows unter OSX?

Lesezeit: 3 Minuten

Benutzer-Avatar
Paolo

Ich portiere eine Bibliothek von Windows nach *NIX (derzeit OSX). Weiß jetzt jemand, welche Funktion ich anstelle von Microsofts QueryPerformanceCounter und QueryPerformanceFrequency verwenden kann?

Auf OSX mach_absolute_time und mach_timebase_info sind die besten Äquivalente zu Win32 QueryPerformance*-Funktionen.

Sehen http://developer.apple.com/library/mac/#qa/qa1398/_index.html

Benutzer-Avatar
Ronny Brendel

http://www.tin.org/bin/man.cgi?section=3&topic=clock_gettime
(und die anderen dort erwähnten Funktionen) – es ist Posix! Wird auf schlechtere Zähler zurückgreifen, wenn HPET nicht vorhanden ist. (sollte aber kein Problem sein)

http://en.wikipedia.org/wiki/High_Precision_Event_Timer

Die Auflösung sollte etwa +10 MHz betragen.

  • clock_gettime ist Teil der POSIX Realtime Extension und leider nicht auf Mac OS X implementiert.

    – Zum Archiv zurückgelassen

    20. Mai 2011 um 1:13 Uhr


  • Keine tolle Antwort. clock_gettime wird nicht unterstützt und gibt die Zeit in Sekunden statt Zählerticks zurück (selbst wenn es unterstützt wurde).

    – Gerechtigkeit

    14. Februar 2014 um 19:25 Uhr

Benutzer-Avatar
zeit

Probieren Sie Boosts aus pzeit für tragbares hochauflösendes Timing.

Aktualisieren (aufgefordert, 2 Jahre später, durch Marks Kommentar unten):

Heutzutage würde ich eine verwenden std::chrono::high_resolution_clock ; Beispiel.

  • Sieht so aus, als würde das unter Linux / Mac funktionieren, aber zitieren: Holen Sie sich die UTC-Zeit mit einer Uhr mit einer Auflösung von weniger als einer Sekunde. Auf Unix-Systemen wird dies mit GetTimeOfDay implementiert. Auf den meisten Win32-Plattformen wird es mit ftime implementiert. Win32-Systeme erreichen über diese API oft keine Mikrosekundenauflösung. Wenn eine höhere Auflösung für Ihre Anwendung entscheidend ist, testen Sie Ihre Plattform, um die erreichte Auflösung zu sehen.

    – Mark Harviston

    13. April 2012 um 13:48 Uhr

  • Danke, ptime nicht so portabel wie ich dachte. Trotzdem haben Sie mich aufgefordert, meine Antwort hier zu aktualisieren. Siehe auch stackoverflow.com/questions/1487695/…

    – uhrtag

    13. April 2012 um 17:58 Uhr

Er fragte nach OS X. Verwenden Sie diese APIs von CoreAudio:

AudioConvertHostTimeToNanos(AudioGetCurrentHostTime())

Früher hatte man entweder uclock oder man vertiefte sich in Assembler, um die zu lesen RDTSC.

G.

  • Wenn Sie einen hochauflösenden Timer verwenden, werden Sie wahrscheinlich nicht in den Energiesparmodus wechseln.

    – graham.reeds

    23. Januar 2009 um 11:47 Uhr

  • Möglicherweise nicht, aber ein anderer Prozess kann das System in diesen Modus versetzen. Es hängt davon ab, welche Art von Einschränkungen Ihr System hat. Für die breite Öffentlichkeit ist es nicht garantiert.

    – ApplePieIstGut

    23. Januar 2009 um 16:12 Uhr

  • Es wird auch scheitern, wenn Ihr Prozess CPUs wechselt, wenn ich mich richtig erinnere … wir haben einige Auswertungen mit tsc + linux und den Auswirkungen von Energiesparfunktionen durchgeführt. Jeder Kern hat seinen eigenen tsc.

    – Ronny Brendel

    24. Januar 2009 um 19:07 Uhr

  • Neuere AMD- und Intel-Chips implementieren konsistentes RDTSC. Gut genug für mich.

    – Marius

    7. Juli 2010 um 15:14 Uhr

  • Wenn Sie einen hochauflösenden Timer verwenden, werden Sie wahrscheinlich nicht in den Energiesparmodus wechseln.

    – graham.reeds

    23. Januar 2009 um 11:47 Uhr

  • Möglicherweise nicht, aber ein anderer Prozess kann das System in diesen Modus versetzen. Es hängt davon ab, welche Art von Einschränkungen Ihr System hat. Für die breite Öffentlichkeit ist es nicht garantiert.

    – ApplePieIstGut

    23. Januar 2009 um 16:12 Uhr

  • Es wird auch scheitern, wenn Ihr Prozess CPUs wechselt, wenn ich mich richtig erinnere … wir haben einige Auswertungen mit tsc + linux und den Auswirkungen von Energiesparfunktionen durchgeführt. Jeder Kern hat seinen eigenen tsc.

    – Ronny Brendel

    24. Januar 2009 um 19:07 Uhr

  • Neuere AMD- und Intel-Chips implementieren konsistentes RDTSC. Gut genug für mich.

    – Marius

    7. Juli 2010 um 15:14 Uhr

1367720cookie-checkWas entspricht dem QueryPerformanceCounter von Windows unter OSX?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy