linuxでプログラムを実行するのに要した時間をマイクロ秒単位(またはより正確に)に知りたい。現在はtime
コマンドを使用していますが、最大ミリ秒の精度で表示されます。 time
コマンドを微調整してより正確な精度を得る方法はありますか?同じコマンドがありますか?linux timeコマンドマイクロ秒以上の精度
答えて
あなたの質問は意味がありません。レポートしても数ミリ秒以内に測定を繰り返すことはありません。
数字を追加するだけでノイズが追加されます。余分な数字を/dev/random
から引き出すこともできます。
current_kernel_time()があなたの要件に役立つかどうかを参照してください。 私はそれを使用しており、ナノ秒レベルに粒度を与えるので有用であることがわかりました。 詳細はhereです。
私はEmployed Russian's answerと同意します。このような尺度では、マイクロ秒の精度を求めるのはあまり意味がありません。だから、あなたが持っている追加の数字は無意味です(と本質的にランダム)。
測定するアプリケーションのソースコードをお持ちの場合は、clockまたはclock_gettime関数を使用することができますが、十数マイクロ秒の精度よりも良いとは限りません。 RDTSC機械命令もあります。
linux clock howtoをお読みください。
実行のタイミングは、アプリケーションの観点から、非決定論的で非再現性のないものであることを忘れないでください(コンテキストスイッチ、キャッシュミス、割り込みなどをランダムに考える)。
プログラム全体のパフォーマンスを測定したい場合は、少なくとも数秒間実行し、数回(たとえば8回)時間を測定し、平均値を取る(おそらく最悪のタイミング&)。あなたが特定の機能のためのタイミングを測定したい場合は
、アプリケーションprofileする方法を学ぶ(gprof
を、oprofile
などなど...) も参照this question
BEを読むことを忘れないでください現在の(ラップトップ、デスクトップ、サーバ)out-of-orderpipelinedsuperscalarプロセッサーがCPU cachesとTLBとbranch predictorsの複雑なマシン命令iの実行時間再現性がありません(ナノ秒のカウントは実行ごとに異なります)。またOSはランダム性(scheduling,context switches,interrupts,page cache,copy-on-write,demand-paging ...)を追加しているので、何かのコマンドの実行を1ミリ秒以上(おそらく100μs)と測定しても意味がありません。精度のあなたはあなたのコマンドを何度もベンチマークするべきです。
ベンチマーク済みのアプリケーションを数秒以上実行するように変更する必要があります(おそらくmain
にループを追加するか、より大きなデータセットを使用して実行します)。そして、ベンチマークされたコマンドをダース回。それは、測定値の平均値(または最悪値、または最善値、あなたの後ろに依存する)を取ります。
システムtime(1)で十分でない場合は、独自の測定機能を作成することがあります。 getrusage(2)も参照してください。私はあなたがより正確な措置を取っていることについて懐疑的です。
ところで、私のi3770K最近のGNU/Linuxの(4.2カーネル、Debianの/シド/ x86-64で)上のデスクトップコンピュータ、避ける約3または4ナノ秒単位でtime(2)またはclock_gettime(2)実行するような "システム" -calls(vdso(7)のおかげで実際の負担はsyscall ...)ですので、の中にのプログラムをよく使うことができます。
gettimeofdayを使用 - マイクロ秒の精度を与えます
- 1. スウィフトで倍精度以上の精度を実現
- 2. Linuxで高精度ナノ秒遅延を得る方法
- 3. のJava DateFormatの2ミリ秒の精度
- 4. SQLiteは:ミリ秒単位の精度
- 5. Linuxカーネルタイマーサブシステム:精度と解像度
- 6. Actionscript 3高精度時間メソッド(マイクロ秒)?
- 7. 拡張ツールキットWPF DateTimePicker秒精度
- 8. 5%以上の精度でバッテリレベルを取得
- 9. LinuxのCからのミリ秒とナノ秒の精度の時間差を印刷する方法は?
- 10. 5秒以上iphoneの音
- 11. ミリ秒を含むようにApacheログの精度を向上させる
- 12. マイクロ秒レベルの精度でRAWソケットパケットを受信
- 13. iOS上の高精度乱数
- 14. 精度
- 15. Cウィンドウのシステム時間をマイクロ秒精度にしますか?
- 16. 精度が向上したExprTk
- 17. pchisq小数精度を向上
- 18. 秒をstd :: chrono :: durationに倍精度に変換しますか?
- 19. 秒精度でGPS位置を取得するには?
- 20. scikit-learn:サポートベクターマシン。精度や精度は?
- 21. Android精度から衛星精度
- 22. SQL Server 2008 TIMEの精度を数時間に短縮できますか?
- 23. 異なるOSでPHPのマイクロ秒精度はどれくらいですか?
- 24. 私は以下のコードを使用している緯度・経度精度
- 25. ジオコーディングの精度
- 26. 精度のヒートバー
- 27. MySQL:Datefieldの精度
- 28. 緯度クエリ - 精度
- 29. openSSLの速度の精度
- 30. emacs 23.3b起動が11秒以上
私はあなたのことを理解していません。今日のプロセッサでは不可能ではないミリ秒より正確さが求められ、ナノ秒の精度まで向上させることができます。数字を増やすとノイズが増えますか? –
@Guidance非リアルタイムOS上で動作するコードは、決定論的な実行をしないためです。それは、OSがいくつかのIPパケットや他の任意のプロセスを実行したり、クラウドが何かをすべきかどうかを調べたり、ファイルシステムがダーティページなどを書き出すべきかどうかをチェックしたり、いくつかの(少量の)時間のために再タイミングが中断され、タイミングがオフになります。 CPU時間(壁時計時間とは対照的に)などのOSの組み込みタイミングは、通常、一定の解像度(多くの場合1カーネルティック、1ミリ秒以上)を持つタイムスライスでカウントされます – nos
'time /ビン/スリープ0.006 'は、ノイズが1ミリ秒未満であることを示すようである。そのような測定は間違いなく危険ですが、Guanideneの要請自体は意味がありません。 –