BASHとカスタムシェルの実行時間の測定

BASHとカスタムシェルの実行時間の測定

私はジョブ制御とパイプ/リダイレクト機能を備えたシンプルなシェルを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

おすすめ記事