curlの-wオプション(時間計測)

皆さんはcurlというコマンドはご存じでしょうか?

curlは、URLで指定されたデータを転送するためのコマンドラインツールです。APIをコマンドで確認するときによく見るコマンドだと思います。

curl-7_70_0からサポートされた-wオプションの”%{json}”を使って時間計測をしてみたいと思います。

writeout: support to generate JSON output · curl/curl@04c0341 · GitHub

目的

curlを用いた時間計測を実際に実行してみて確認する。

実行環境

  • Ubuntu 22.04.1 LTS
  • curl 7.81.0
  • Python 3.10.6

順番

  1. Pyhon3で簡易サーバーをlocalhostに作成
  2. curlで時間計測

1. Pyhon3で簡易サーバーをlocalhostに作成

$ python3 -m http.server 8080

実行結果

Serving HTTP on 0.0.0.0 port 8080 (http://0.0.0.0:8080/) …

今回はPort番号8080を指定して作成した。

2. curlで時間計測

簡易サーバーである,localhost:8080への時間を計測してみる。

実行コマンド

$ curl -s -o /dev/null -w '%{json}' localhost:8080 | jq | grep time

実行結果

"time_appconnect": 0,
"time_connect": 6.8e-05,
"time_namelookup": 1.3e-05,
"time_pretransfer": 8.4e-05,
"time_redirect": 0,
"time_starttransfer": 0.000866,
"time_total": 0.000913,

time_appconnectコマンドを実行してからリモートホストへの接続が完了するまでの時間
time_connectコマンドを実行してからリモートホストへのTCP接続が完了するまでの時間
time_namelookupコマンドを実行してから名前解決をするまでにかかった時間
time_pretransferファイル転送の開始から開始するまでにかかった時間
time_redirectリダイレクトの手順にかかった時間
time_starttransferコマンドを実行してから最初のbyteが転送される直前までの時間(time_pretransferを含む)
time_totalコマンドを実行してから終了するまでの時間

time_appconnectとtime_redirectが0秒になっているのはlocalhostにリダイレクトなしでアクセスしているからですね。

Leave a Reply