CGI::Carpはデバッグのときだけにしましょう…?
表題のとおり。
かれこれ2ヶ月以上前になるのですが ぜろちゃんねるプラス総合スレでこんなことをいわれました。
24 名前:名無しさん@ぜろちゃんねる[] 投稿日:2011/01/05(水) 14:49:29 ID:9yttXzPU0 use warnings; use CGI::Carp qw(fatalsToBrowser); 本運用の時にこれ書いてると動作速度落ちるから、デフォルトではコメントアウトしたほうがいいとおもいます
それ以降はデバッグのときだけ use CGI::Carp qw(fatalsToBrowser); のコメントを外すような形にしているんだけども、そんなに処理速度落ちるもんなのかとおもって調べてみた。
今回調査したスクリプトは「Hawker!」のindex.cgi。たまたまCGI::Carpをコメントアウトせずに運用していた。まぁこの記事を書く理由はこれのせいなのだが。
Hawker!で行っている処理
まぁそもそもHawker!は中身でいったい何をしているのかっていうのを軽く説明しようとおもう。別にソースごと公開しても全然構わないんだけどもどうにも汚らしいコードなのでやっぱりやめておくことにした。
これだけ。非常に単純な仕組みで動いてますね。まぁ問題なのは短縮URLの調査とurl.rbl.jpの問い合わせで1回のリクエストに対して2回も送信しちゃうところでしょうか。まぁ以上を踏まえて早速動作速度の調査に入りたいと思います。
実行速度の求め方
さて具体的な調査の仕方ですが以下のコードを使いたいと思います。
use Time::HiRes; my $stime = Time::HiRes::time; # ここに処理 printf("%0.5f sec",Time::HiRes::time - $stime);
まぁ要はTime::HiResを使って処理の最初と最後の現在時間を求めてそいつらの差を出せばわかります。だいぶアバウトではありますがそこまで正確に求める必要もないので今回はこれで。
まぁ早速結果を出していきましょう