curlコマンドによるウェブアプリのパフォーマンス測定 (2) アップロード・ダウンロード速度測定パッチ

前回の続き。

前回色々試した結果、curlの-wオプションではPOSTリクエストのボディとレスポンスのBodyが両方とも大きい場合、アップロード・ダウンロード速度を上手く計れないことが分かりました。仕方ないのでcurlを改造することにしました。

今回追加したのは-wオプションで使える以下の変数です。

変数名 意味
time_startupload リクエスト送信開始時間
time_finishupload リクエスト送信終了時間
time_startdownload レスポンス受信開始時間
time_finishdownload レスポンス受信終了時間

前回のtest3.cgiで試すと以下のような感じになります.

$ curl -s -o /dev/null --data-binary @big.txt -w @format.txt http://localhost/~wagavulin/test3.cgi
http_code           200
size_upload         61931520
speed_upload        26589078.000
size_download       104857600
speed_download      45018544.000
time_pretransfer    0.001
time_starttransfer  0.002
time_startupload    0.002
time_finishupload   0.152
time_startdownload  2.173
time_finishdownload 2.329
time_total          2.329

概ね期待通りの値が出ています。ソースはgithubに置きました。ビルド方法はGIT-INFOに書いてありますが、

$ ./buildconf
$ ./configure
$ make

ビルドできます(Ubuntu-14.04で確認)。また、autoconf, automake, libtoolが必要です。