答えて
QueryPerformanceCounterのはで動作するものスピード見るためにQueryPerformanceFrequency
機能を使用。私はそれがナノ秒の範囲にあるかもしれないと思う。
非常に古いAPI呼び出しで、タスクスイッチを調整しません。 – Lothar
@Lothar:実行時間をナノ秒単位で測定すると、タスクスイッチが発生したときにその測定サンプルをスキップすることができます。 –
独自のアセンブリを実行できる場合は、CPUのサイクルカウンタを読んで、CPUのクロックレートでサイクル差、それを分割することができます:
static inline uint64_t get_cycles()
{
uint64_t t;
__asm__ __volatile__ ("rdtsc" : "=A"(t));
return t;
}
IIRC、ですが、これに落とし穴があるかもしれない...それが可能なだけのどちらかですより新しいCPU上で、あるいはそれはカーネルモードでしか利用できない、またはそのようなものである... – Mehrdad
@Mehrdad: 'rdtsc'は、P6ファミリのCPU、おそらくは元のPentiumからも利用可能です。それはカーネルモードに制限することができますが、Windowsがそうしているかどうかはわかりません。 – cHao
@Mehrdad:いいえ、Windowsではカーネルモードに限定されていません。 VCを使用する場合、構文は 'long long ticks()です。 { __asm {rdtsc}; } '新しいCPUであれば、Pentiumを意味するのですが、それは「新しい」CPUでのみ利用可能です。個人的には、486とそれ以前のコードを書いてからしばらくしています。 –
WindowsのQueryPerformanceCounterをご覧ください。
パフォーマンスのボトルネックを特定するタイミングコードでは、 のシステムで提供される最高の解像度のタイマーを使用します。この記事 はRDTSCとQueryPerformanceCounterの/ QueryPerformanceFrequencyの両方が十分に正確ではありません時間 アプリケーションコード
これはコメントであり、良い答えではありません。 –
@MooingDuck:どうしてですか? – Mehrdad
@Mehrdad:これを読んだとき、私は質問に対する答えを理解することに進展しなかったので。これはリンクです。少なくとも_サマリーが必要です。 –
利用のWindows7とハードウェアカウンタプロファイリングAPI http://msdn.microsoft.com/en-us/library/windows/desktop/dd796395(v=vs.85).aspx
にQueryPerformanceCounter関数を使用する方法について説明しますオーバーヘッド、割り込み、およびタスクスイッチが大きいためです。
[編集]:残念ながらPerformanceCounterとハードウェアカウンタのリンクが混在しています。申し訳ありませんが、これは一度しか使用されていませんでした。
これはどのように使用しますか?私はそれを理解することはできません。 –
ここに何かあります:http://msdn.microsoft.com/en-us/magazine/cc163996.aspx –
そして、異なるコード実装のランタイムを比較したい場合、実行サイクルは絶対時間ではなく計算してください。 – Lothar
- 1. カーネル全体のナノ秒のタイミング?
- 2. タイムスタンプをナノ秒で保存するC++
- 3. 2ナノ秒クロノ:: time_pointsの差(秒単位)?
- 4. STM32のCでナノ秒遅延を生成
- 5. CLOCK_REALTIMEカーネルでのナノ秒精度のサポート
- 6. 数ナノ秒間ブーストスレッドをスリープ
- 7. 100ナノ秒をミリ秒の混乱に変換する
- 8. ナノ秒精度のタイムスタンプの比較R
- 9. VB Excelマクロミリ秒タイミング
- 10. タイムスタンプをナノ秒(Qt)に変換する
- 11. LinuxのCからのミリ秒とナノ秒の精度の時間差を印刷する方法は?
- 12. DatetTimeにマイクロ秒とナノ秒を追加するには?
- 13. エポックからナノ秒単位で印刷する時間
- 14. 秒とナノ秒をマイクロ秒に変換する最速の(最適な)方法
- 15. Windowsでtime :: Durationのナノ秒値が100の最も近い倍数になるのはなぜですか?
- 16. ナノ秒を差し引いたパンダ
- 17. Java 9でナノ秒の精度で時間を逃す方法
- 18. QueryPerformanceCounterをUNIXのナノ秒(エポック)に変換する方法
- 19. ナノ秒ごとに関数を呼び出しますか?
- 20. エポック時間をナノ秒で測定する - Android
- 21. std :: chronoでカウントする時間が0ナノ秒になる
- 22. bashの:ナノ:コマンドのWindowsのgit bashの
- 23. Java 8でナノ秒のないLocalDateTimeを比較
- 24. タイムスタンプをナノ秒の解像度に変換するPostgreSQLのサポート
- 25. BigQueryは、任意の日付時刻データ型でナノ秒をサポートしますか?
- 26. timespecは、tv_nsecフィールドに1秒以上のナノ秒を持つことができますか?
- 27. windows C++とマイクロ秒スリープの可能性
- 28. Linuxで高精度ナノ秒遅延を得る方法
- 29. はナノ秒の解像度UNIXの追加時間
- 30. 日付をナノ秒に変換するR
[Boost.Chrono](http://www.boost.org/libs/chrono/)を参照してください。 – ildjarn
[QueryPerformanceCounter](http://msdn.microsoft.com/en-us/library/windows/desktop/ms644904(v = vs.85).aspx)はWindowsですが、Boostは優れており、移植性もあります。 –
ほとんどのシステムで実行時間を秒単位で正確に測定することはできません。 – AJG85