• ベストアンサー

CGIの表示時間、測定

Perlを使っています。 CGIの表示時間の測定で、 ********************** $start = (times)[0]; 処理内容 HTML等 $end = (times)[0]; $speed = $end-$start; printf("消費時間: %.5f CPU秒",$speed); ******************* 大体かと思いますが、処理時間の目安としていました。 でも、最近新しいCPUが高いPCを買って、表示速度 が"0.01600 CPU秒" か、"0.00000 CPU秒"にしか、 なりません。 もっと細かく分かる方法はありませんでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
noname#14464
noname#14464
回答No.4

秒単位というのは間違いです。忘れてください(^^ゞ (timeのページと見間違えました)

happy_books
質問者

お礼

モジュールを調べる、、、前に目の前の問題が 解決してしまって。 手をつけていません。^^; 質問は、テスト前の机の片づけみたいなものでした。 これから、モジュールに手をつけようと思ってます。 アドバイスありがとうございました。

その他の回答 (3)

noname#14464
noname#14464
回答No.3

 今帰宅したのでマニュアルを調べてみたら、 これは秒単位の計測ですね。  Windowsを使っているのならば、 Win32::APIモジュールをインポートして、 GetTickCountを使ってみては?timesが"CPU時間"というので、こっちがどの単位かはよく分らないですが、これを使えばミリ秒単位での計測が出来ます。CPU時間じゃないのでI/O時間も計測できるかもしれません。 http://nienie.com/~masapico/api_GetTickCount.html  それでも精度が低いのならば、QueryPerformanceFrequencyとQueryPerformanceCounterを使えば、マイクロ秒単位で計測できます。 http://homepage1.nifty.com/aok2/004/win01.html  わたしはCGIとしてしかPerlを使ってないので、モジュール呼び出しには明るくありませんが、 PerlでWin32APIを使用するサンプルは、下記が参考になるかと思います。 http://www.geocities.jp/winapi_database/Kimagure/No16/

  • leaz024
  • ベストアンサー率75% (398/526)
回答No.2

Time::HiRes モジュールを使ってみてはどうでしょうか。 use Time::HiRes qw/gettimeofday tv_interval/; $start = [gettimeofday]; * 時間を計測したい処理 * $end = [gettimeofday]; $speed = tv_interval($start, $end); printf "%.6f 秒", $speed;

参考URL:
http://perldoc.jp/docs/modules/Time-HiRes-1.55/HiRes.pod
happy_books
質問者

お礼

モジュールを調べる、、、前に目の前の問題が 解決してしまって。 手をつけていません。^^; 質問は、テスト前の机の片づけみたいなものでした。 これから、モジュールに手をつけようと思ってます。 アドバイスありがとうございました。

noname#14464
noname#14464
回答No.1

 処理内容が短すぎて、その新しいCPUにとっては、時間をほとんどとっていなかった(指定桁数以下の時間で処理が終わってしまった)のではないでしょうか? 多くの場合、処理内容をループ実行するなどして、処理時間を長引かせることで、指定桁数以内にはいるようにすればよいです。

happy_books
質問者

補足

そうなんですよね。 何度かループすればいいんですが、 「あー、この処理の方が少しは早いかも。。。」と 日常的にサーバで表される時の状態を知りたい訳で、 部分部分をループしてしまうと、処理によってはエラー が起きたり、全体的にみれない気がするのです。 ループ内の処理は速くなったけど、送信容量が多くなって 逆に遅くなる事も考えられますし。  ページ全体を100回ループすれば、問題ないのかもしれま せんが、そうすれば、htmlに書かれている全部が100回 書き出される訳で、当然ページも長くなってしまって。 まぁ、あまり巨大な処理やファイルを読み込んでない ので、私の思ってる事は細かい事で気休めなのかも しれませんが。^^; 何か制度があがる方法があればと思ったのですが。