時間のかかる処理はFirebugでどう観測されるか?
発端は、firebugのNetタブで見ることができるグラフは、ネットワーク待ち時間を含んでいるかという疑問です。調べればどこかに書いてありそう(or JavaScriptコード読んでも分かりそう)ですが、実験した方が早いので、やってみました。
apacheはapache2.2.0です。
まず次のようなCGIスクリプトで、時間のかかる処理をエミュレーションしてみました。
#!/usr/bin/perl sleep 10; print "Content-Type: text/html\n\n"; print "<html><title>t</title><body><img src=\"/img/apache_pb.png\"><img src=\"/img/apache_pb.gif\"></body></html>";
sleepの秒数を変えても、firebugの結果は常に次のような表示になりました。
実際にはネットワーク待ち時間が10秒ありますが、firebugのグラフに10秒は現れません。
次のようにCGIスクリプトを変えてみました。
#!/usr/bin/perl print "Content-Type: text/html\n\n"; $| = 1; # non-buffering print "<html><title>t</title><body><img src=\"/img/apache_pb.png\">"; sleep 10; print "<img src=\"/img/apache_pb.gif\"></body></html>";
この結果は次のようになりました。
10秒のネットワーク待ち時間がグラフに現れました。
この実験で、firebugのNetタグのグラフは、HTTPレスポンスを受け始めてからの時間を表示していることが分かります(リクエストを投げてから、レスポンスを受け始めるまでの待ち時間は含みません)。計測のエンドが、レスポンスを受け終わるまでか、画像であればレンダリングするまでなのか、JavaScriptであれば解釈するまでなのか、の区別は、この実験では判断できません。おそらく、レスポンスを受け終わるまでの時間な気がします(Netタブなので、純粋にデータ転送時間を出すのが自然に思えます)。確証はないので、裏を取りたければ、ほぼ同じサイズのHTMLファイルと(解釈に時間のかかりそうな)JavaScriptファイルで比較すれば判断できるでしょう。
上の実験から、結局、リクエスト開始からレスポンス終了までの時間を知るには、firebugのNetタブは適していないことが分かります。
計測の目的がネットワークの遅延ではなく、サーバ側の処理時間であれば、Apacheのログを見るのが確実です。
LogFormat(http://httpd.apache.org/docs/2.2/en/mod/mod_log_config.html)で%D(マイクロ秒)、%T(秒)のいずれかでログにでます。このふたつ、単位が違うだけで、まったく同じ算出です。
- Category(s)
- カテゴリなし
- The URL to Trackback this entry is:
- http://dev.ariel-networks.com/Members/inoue/firebug-net/tbping