2016-04-14 10 views
3

CLOCK_THREAD_CPUTIME_IDclock_gettimeを使って、異なるスレッドの時間消費を測定するのに使用しました。C++世界にスレッド固有のクロックがありますか?

しかしclock_gettimeはPOSIXワールドの標準であるため、プラットフォームの横断に関してはWindowsのような他のプラットフォームでは動作しません。

C++ STDを確認したところ、steady_clock,system_clcok,high_resolution_clockとなっていましたが、いずれも特定のスレッドをクロックすることはできません。

私は何かを欠場しましたか?はいの場合、弾丸は何ですか?そうでない場合、アドバイスはありますか?

+0

より詳細な説明を付けることができれば、より効果的です。答えとして。 @JoachimPileborg – hxpax

+0

@JoachimPileborgあなたはコメントセクションではなく、適切な場所に投稿することができます。その後、他の回答と同様にピアレビューを行うことができます。これは、より多くの「フォーラム」のようなウェブサイト上にSOモデルを作成するという全目的でした。 –

答えて

1

スレッドタイマーの実装を抽象化しなければなりません。窓の下ではGetThreadTimesの機能を使用できます。 linux(またはPOSIX以外)では、CLOCK_THREAD_CPUTIME_IDを使用します。しかし、私はあなたがCLOCK_THREAD_CPUTIME_IDが利用可能になるウィンドウの下でmingwでコンパイルすると仮定します。ブーストthread_clock

2

C++標準でCPU時間を測定する唯一の「時計」を見てみましょう移植性のためにも

が、それはまだポータブルではありませんので、WindowsのCPU時間を測定しない std::clock、あり、そしてとにかくスレッドごとではなく、プロセスごとです。

スレッドCPU時間を測定する場合は、移植性のないプラットフォーム固有の機能に頼らなければなりません。

関連する問題