2014年7月22日火曜日

time コマンドでビルド時間の計測

time と awk コマンドでビルド時間の計測をしてみました。
対象は自作 C++ テスティングフレームワークの iutest です。

num=1; while [[ $$num -le 10 ]]; do \
    make -C benchmark clean; \
    { time -p make -C benchmark build 2>&1; } 2>> _time.log; \
    ((num = num + 1)); \
done
@awk 'BEGIN{ sum=0; max=0; min=-1; num=0; } \
    { if($$1=="user") { num+=1; if(min==-1){ min=$$2; } sum+=$$2; \
    if($$2>max){max=$$2}; if(min>$$2){min=$$2}; } } \
    END{ print("Total:", sum, "(",num,")" ); print("Min:", min); ¥
  print("Max:", max); print("Avg:", sum/num); }' _time.log

time コマンドの出力を _time.log ファイルに書いていき、最後に awk で平均を出しています。
こんな感じで出力されます。

Total: 202.01 ( 10 )
Min: 19.65
Max: 20.78
Avg: 20.201

iutest はこれに加えて基準となるような別のプログラムのビルド時間も計測し、スコアとして数値化しています。
マシンスペックなどの差を考えて、このような仕組みにしました。
のつもりでしたが、マシンごとにスコアが大分違う結果に・・・

ともあれ、これを元にビルド時間の短縮を試みたいと思います。

0 件のコメント:

コメントを投稿