対象は自作 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
Min: 19.65
Max: 20.78
Avg: 20.201
iutest はこれに加えて基準となるような別のプログラムのビルド時間も計測し、スコアとして数値化しています。
マシンスペックなどの差を考えて、このような仕組みにしました。
のつもりでしたが、マシンごとにスコアが大分違う結果に・・・
ともあれ、これを元にビルド時間の短縮を試みたいと思います。
0 件のコメント:
コメントを投稿