3

WindowsのC++で時間をナノ秒単位で測定する方法はありますか?

私が見つけることができるのはLinuxソリューションだけです。

4

4 に答える 4

6

この関数を使用してQueryPerformanceFrequency、QueryPerformanceCounterが実行される速度を確認します。ナノ秒の範囲かもしれないと思います。

于 2012-04-04T21:59:13.153 に答える
4

WindowsでQueryPerformanceCounterを調べます。

パフォーマンスのボトルネックを特定するためのタイミングコードを作成するときは、システムが提供する最高の解像度のタイマーを使用する必要があります。この記事では、QueryPerformanceCounter関数を使用してアプリケーションコードの時間を計測する方法について説明します。

http://support.microsoft.com/kb/172338

于 2012-04-04T22:00:33.760 に答える
1

独自のアセンブリを実行できる場合は、CPUのサイクルカウンターを読み取り、サイクル差をCPUのクロックレートで割ることができます。

static inline uint64_t get_cycles()
{
  uint64_t t;
  __asm__ __volatile__ ("rdtsc" : "=A"(t));
  return t;
}
于 2012-04-04T21:59:08.453 に答える
1

Windows7とハードウェアカウンタープロファイリングAPIを使用する http://msdn.microsoft.com/en-us/library/windows/desktop/dd796395(v=vs.85).aspx

rdtscとQueryPerformanceCounter/QueryPerformanceFrequencyはどちらも、オーバーヘッド、割り込み、およびタスクの切り替えが大きいため、十分に正確ではありません。

[編集]:パフォーマンスカウンターとハードウェアカウンターのリンクを混同して申し訳ありません。申し訳ありませんが、一度だけ使用したことがあり、これは簡単な答えでした。

于 2012-04-04T22:01:29.580 に答える