2016-04-14 4 views
3

Ich habe Zeitverbrauch von verschiedenen Threads mit CLOCK_THREAD_CPUTIME_ID und clock_gettime gemessen.Gibt es irgendwelche threadspezifischen Uhren in der C++ Welt?

Aber clock_gettime ist ein Standard in POSIX-Welt, so dass es nicht in anderen Plattform wie Windows funktioniert, wenn es um Plattform Kreuzung geht.

Ich überprüfte die C++ STD, gefunden steady_clock, system_clcok, high_resolution_clock bis jetzt, keiner dieser kann einen bestimmten Thread Uhr.

Habe ich etwas vermisst? Wenn ja, was ist die Kugel? Oder wenn nicht, irgendwelche Ratschläge?

+0

Besser, wenn Sie eine detailliertere exp geben können. als Antwort. @JoachimPileborg – hxpax

+0

@JoachimPileborg Sie könnten es jedoch an der richtigen Stelle im Kommentarfeld posten. Dann kann es wie jede andere Antwort peer-reviewed werden, was der gesamte Zweck der Erstellung von SO-Modell über mehr "Forum" -ähnliche Websites war. –

Antwort

1

Sie müssen die Implementierung Ihres Thread-Timers abstrahieren, unter Windows können Sie die Funktion GetThreadTimes verwenden. Verwenden Sie unter Linux (oder nicht POSIX) CLOCK_THREAD_CPUTIME_ID. Aber ich nehme an, wenn Sie mit mingw unter Windows kompilieren, dann wird CLOCK_THREAD_CPUTIME_ID verfügbar sein.

Auch für die Portabilität bei boost einen Blick thread_clock

2

Die einzige „Uhr“ CPU-Zeit in dem C++ Standard zu messen, ist std::clock, die es nicht CPU-Zeit in Windows messen, so noch nicht tragbar, und Wie auch immer, es ist pro Prozess und nicht pro Thread.

Wenn Sie Thread-CPU-Zeit messen möchten, müssen Sie auf nicht-portable plattformspezifische Funktionen zurückgreifen.

Verwandte Themen