私はジョブ制御とパイプ/リダイレクト機能を備えたシンプルなシェルをCで書いています。このシェルの実行時間(実際、ユーザー、およびシステム)をBASHとどのように比較しますか?たとえば、lsコマンドの実行時間を測定したいとします。問題は、実行時間が異なることです。 lsコマンド(壁時間)は、BASH組み込み機能を使用して測定した約0.002秒です。複数の実行を測定する方法は?たとえば、単純なBASHスクリプトを使用して複数の実行を測定しました。
for i in {1..5000}
do
ls
done
私のシェルで同様のことをする方法がわかりません。 lsコマンドを5000回解析して実行するシェルコードにforループを作成しましたが、bashスクリプトのforループはおそらくはるかに遅いので、比較する方法はありません。
ベストアンサー1
これにより、2番目のセグメンテーションが提供されますが、少なくともls
。
for i in {1..5000}
do
start=${SECONDS}
ls
end=${SECONDS}
echo that took $((end - start)) seconds
done
このdate
コマンドを使用して、エポック後のナノ秒を取得できます。
for i in {1..5000}
do
start=$(date +%s%N)
ls
end=$(date +%s%N)
echo that took $((end - start)) nanoseconds
done