WindowsのC++で時間をナノ秒単位で測定する方法はありますか?
私が見つけることができるのはLinuxソリューションだけです。
WindowsのC++で時間をナノ秒単位で測定する方法はありますか?
私が見つけることができるのはLinuxソリューションだけです。
この関数を使用してQueryPerformanceFrequency
、QueryPerformanceCounterが実行される速度を確認します。ナノ秒の範囲かもしれないと思います。
WindowsでQueryPerformanceCounterを調べます。
パフォーマンスのボトルネックを特定するためのタイミングコードを作成するときは、システムが提供する最高の解像度のタイマーを使用する必要があります。この記事では、QueryPerformanceCounter関数を使用してアプリケーションコードの時間を計測する方法について説明します。
独自のアセンブリを実行できる場合は、CPUのサイクルカウンターを読み取り、サイクル差をCPUのクロックレートで割ることができます。
static inline uint64_t get_cycles()
{
uint64_t t;
__asm__ __volatile__ ("rdtsc" : "=A"(t));
return t;
}
Windows7とハードウェアカウンタープロファイリングAPIを使用する http://msdn.microsoft.com/en-us/library/windows/desktop/dd796395(v=vs.85).aspx
rdtscとQueryPerformanceCounter/QueryPerformanceFrequencyはどちらも、オーバーヘッド、割り込み、およびタスクの切り替えが大きいため、十分に正確ではありません。
[編集]:パフォーマンスカウンターとハードウェアカウンターのリンクを混同して申し訳ありません。申し訳ありませんが、一度だけ使用したことがあり、これは簡単な答えでした。