答えて
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. 数ナノ秒間ブーストスレッドをスリープ
- 3. STM32のCでナノ秒遅延を生成
- 4. 100ナノ秒をミリ秒の混乱に変換する
- 5. VB Excelマクロミリ秒タイミング
- 6. LinuxのCからのミリ秒とナノ秒の精度の時間差を印刷する方法は?
- 7. ナノ秒ごとに関数を呼び出しますか?
- 8. bashの:ナノ:コマンドのWindowsのgit bashの
- 9. Linuxで高精度ナノ秒遅延を得る方法
- 10. timespecは、tv_nsecフィールドに1秒以上のナノ秒を持つことができますか?
- 11. windows C++とマイクロ秒スリープの可能性
- 12. PerlでdateTimeを解析すると、マイクロ秒/ナノ秒に正確になります
- 13. Cのタイミング問題
- 14. DateTime2の後の数字は、ナノ秒の目的のための数字ですか?
- 15. SQL ServerとC#データベースがミリ秒のタイミングで更新された場合のクライアントへの即時通知
- 16. C++/Win32 APIパフォーマンスプロファイリング/タイミング
- 17. C#高精度タイミング
- 18. C#のリアルタイムオーディオ解析のタイミング
- 19. C#:WMP、タイムスタンプ(ミリ秒/秒)
- 20. 100ナノ秒のような短い時間Javaスレッドを中断する方法はありますか?
- 21. c/C++:1秒ごとに変数を減らすスレッド? (Windowsの場合)
- 22. Windows Phone 8.1のテーマの変更をプログラムでチェックするタイミング
- 23. Windows XPとWindows 7のJavaタイミングの精度
- 24. これらのナノはどこから来たのですか?
- 25. 計算出力=ナノ?
- 26. タイミングの選択肢は何ですか?
- 27. ロングポーリングWindows Phone、60秒TimeOut
- 28. 機能(jQueryのテンプレートエンジン-ナノ)
- 29. なぜ、Coutは「ナノ」出力を出すのですか?
- 30. Windowsで名前付きパイプを使用するタイミングは?
[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