スクリプトの実行時間は大きく異なります。 Matlabのtimeitに似た時間関数を探したいです。ここ。
たとえば、次のコマンドを評価しています。ここすばやく計算される一致に対してtime LC_ALL=C grep -ao CDA r328_0002.raw | wc -l
ループを実行する
---------------------------------------------
Events real user sys
----------- ----------- ----------- ---------
40 0m0.044s 0m0.042s 0m0.005s
40 0m0.064s 0m0.062s 0m0.005s
40 0m0.046s 0m0.044s 0m0.005s
40 0m0.043s 0m0.042s 0m0.005s
40 0m0.047s 0m0.044s 0m0.005s
---------------------------------------------
Table: Events when Macbook Air 2013-Mid in Power Supply.
---------------------------------------------
Events real user sys
----------- ----------- ----------- ---------
40 0m0.056s 0m0.041s 0m0.011s
40 0m0.060s 0m0.047s 0m0.008s
40 0m0.041s 0m0.039s 0m0.006s
40 0m0.046s 0m0.044s 0m0.006s
40 0m0.047s 0m0.045s 0m0.006s
---------------------------------------------
Table: Events when Macbook Air in Battery Supply, 6h later.
リアルタイム時間は0.044秒から0.064秒に変動し、ユーザー時間は0.042秒から0.062秒に変動し、システム時間は0.005秒に安定していることがわかります。時間についての私の考え
- タイミング前にコマンドを1k繰り返す
- 10回のタイミングを測定して平均と標準偏差をとる
厚い /dev/nul
このアイデアは lcd047 のコメントにあり、time LC_ALL=C ggrep -ao CDA r328_0002.raw >/dev/null
ループで実行されます。
--------------------------------------------
real user sys
-------------- -------------- ------------
0m0.006s 0m0.003s 0m0.002s
0m0.006s 0m0.003s 0m0.002s
0m0.006s 0m0.003s 0m0.002s
0m0.008s 0m0.003s 0m0.003s
0m0.006s 0m0.003s 0m0.002s
0m0.005s 0m0.002s 0m0.002s
0m0.006s 0m0.002s 0m0.002s
0m0.009s 0m0.003s 0m0.003s
0m0.007s 0m0.003s 0m0.003s
0m0.006s 0m0.003s 0m0.002s
0m0.006s 0m0.003s 0m0.002s
0m0.008s 0m0.003s 0m0.003s
--------------------------------------------
Table: Events when Macbook Air 2013-Mid in Battery Supply.
ノートパソコンに電源が入っていて実行中のプログラムが少ない場合は、この時間をさらに改善できると思います。
シェルスクリプトの時間を確実に測定する方法は?
ベストアンサー1
私の答えはいいえ! Linuxはリアルタイムシステムではありません。 UNIXとLinuxの哲学は、システムが複数のユーザーとシステムプロセスで共有されている間に最短の応答時間を提供することです。起動コマンドのタイミングによっては、重要なシステムプロセスがプロセッサ時間を割り当てるのを待つ必要があるかもしれません。さらに、ファイルシステムはディスクから読み取られたファイルをバッファリングできますが、最終的にシステムの他のプロセスがファイルを所有している場合、これらのファイルシステムバッファはキャッシュからデータをロードできません。一般的に、Linuxシステムでプロセスにかかる時間は、宇宙の時間とスペースに関係なく、システムの周りのエントロピーに依存します。
ライブチューニング専用のライブシステムとコマンドと、あなただけのために予約されている特定の量のリソースが必要です。プロセッサ、メモリの一部、環境の基本ファイルシステム自体の反映をスケジュールできる最新のカーネルの新しいCGROUP機能を使用すると、同様の結果が得られます。
あなたの例の主なタイミング問題の1つは、grepとwcが入力を読み取る方法です。ファイルをramfsにコピーして作業するときは、タイミングをより安定させることができます。