• ベストアンサー

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秒"にしか、 なりません。 もっと細かく分かる方法はありませんでしょうか?

  • CGI
  • 回答数4
  • ありがとう数3

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

  • ベストアンサー
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回 書き出される訳で、当然ページも長くなってしまって。 まぁ、あまり巨大な処理やファイルを読み込んでない ので、私の思ってる事は細かい事で気休めなのかも しれませんが。^^; 何か制度があがる方法があればと思ったのですが。

関連するQ&A

  • 経過時間表示

    お世話になります。 System.nanoTime()を使い処理の経過時間を表示したいのですが、最終的にこれをナノ秒ではなく秒で表示したいのですが、0秒と表示されてしまいます。 long start = System.nanoTime(); //処理 long end = System.nanoTime(); System.out.println((end-start)/1000000000); 処理経過時間はナノ秒でだいたい8000000~10000000ナノ秒です。 ですので、10^‐9をかけて秒に直して0.008~0.01秒と表示させようとしたのですが、0秒と表示されます。 どのようにすればSystem.nanoTime()を使い0.008秒と表示できますでしょうか?宜しくお願いします。

    • ベストアンサー
    • Java
  • CGIでhtmlを作成するもブラウザに表示されない(ソース表示あり)

    PerlでHTMLを表示するCGIを作成しました。 ローカルPCで試しているのですが、ブラウザは真っ白な表示で、ステイタスバーには「ページが表示されました」のメッセージがでます。 ソースを表示するとちゃんと指定したHTMLタグがあります。 何が正常な表示の妨げになっているのでしょう。 ちなみにPerlのコードはそんなに難しいものではなく #!/usr/local/bin/perl require "./lib/cgi-lib.pl"; &ReadParse(); print <<END; content-type: text/html <html> <head> <TITLE>送信処理</TITLE> </head> <body bgcolor="#cccccc"> <center> $in{'data'}<BR> </center> </body> </html> END 程度のものです。 ・マシンは富士通FMVでOSはWinXP ・WebサーバーソフトはAN HTTPD Daemon Version 1.41g ・CGIはCygwinのPerl5.8.0です。 ・ブラウザはIE6-SP2です。 この様にブラウザで真っ白な表示になるのは1つのCGIファイルだけで、他のCGIファイルは正常にブラウザ表示されます。

    • ベストアンサー
    • Perl
  • c言語 時間測定

    c言語の時間測定方法についてです。clock_t で start(始めの時間)とend(終わりの時間)を定義して、 end-start で処理時間を求めようとしています。 while文の処理時間ですが、while前からwhile後までの処理時間は出せるのですが、1回1回のwhileの処理時間が0になってしまい困ってます。何かいい方法はありませんか。

  • 「 <!--#exec cgi="***.cgi" --> 」が表示されません

    「main.cgi」というファイルを作り、単純にHTMLを表示するだけのCGIファイルを作成しました。 こんな感じ ------------main.cgi------------ #!/usr/local/bin/perl print "Content-type:text/html\n\n"; print <<EOM; <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=shift_jis"> <title></title> </head> <body> <略> </body> </html> EOM __END__ -------------------------------- それで、ほかのHTMLファイルに <!--#exec cgi="main.cgi" --> と入力してそのページを見てみると、 [an error occurred while processing this directive] 上の文章が表示されていました。 どうすれば「main.cgi」の内容を表示することができるのでしょうか? よろしくお願いします。

    • ベストアンサー
    • Perl
  • clock関数での経過時間計測

    clock関数でプログラムの時間を計測しようと思っているのですがうまくいきません。 ----------------------------- clock_t start,end; start = clock(); (処理) end = clock(); printf("かかった時間:%f",(double)(end-start)/CLOCKS_PER_SEC); ----------------------------- 上のようにしているのですが、実行結果は0.00000秒と出てしまいます。処理のところは足し算を何題か出題し解答を入力し正解したら次の問題というようなことをしています。 確認のためstartにclock()を代入した後とendに代入したあとでprintfでstartとendを出力してみましたが、どちらの値も10.00000で同じ値となっています。0秒になるのはこれのせいだと思うのですが、どうして同じ値になるのでしょうか?

  • 処理時間の計測中に、任意の時間が経過してしまったら、警告表示を行いたいですが、方法が分からないでいます

    C++で、 ある処理の実行に要する時間の計測を行う ソースを書いていたのですが、 時間の計測を開始してから、 3秒以上が経過してしまった場合にのみ、 処理の進行状況に関わらず、 「3秒経過済み」と表示してあげたいと思っていましたが、 時間の計測を、 「difftime」などで表示する方法は分かったものの、 処理の実行中に、3秒以上経過したら、 取り合えず、「3秒経過済み」と表示させる方法が 分からないでいます。 何かアドバイスいただけるとありがたいです。 宜しくお願い致します。 ====================== time_t start, end; time( &start ); //計測開始 //処理が実行される //処理時間の計測中に「最初の3秒が経過してしまった場合」にのみ「3秒経過済み」と表示してあげたい time( &end );//計測終了 ======================

  • 1つのhtmlページにたくさんのCGIを表示したい

    1つのhtmlページにたくさんのCGIを表示したいのですができますか? "Content-type: text1/html\n\n" /* ** CGI版のhello.c(HTML仕様) */ #include <stdio.h> main(){ printf("Content-type:1/html\n\n"); /* ここから HTML でお馴染みのタグ */ <HTML> <HEAD> <TITLE></TITLE> </HEAD> <BODY> /* あいうえお */ "Hello C World!<BR>\n" "</BODY>" "</HTML>" } みたいなCGIを入れたいのですが。

    • 締切済み
    • CGI
  • HTMLからCGIの呼び出しができません。

    既に作ってあるHTMLファイルをコピーして、CGIファイルの名前を変えて送信ボタンをクリックしました。CGIファイルはTITLEだけの記述にしましたが、TITLEは表示されず、http://~のようにアドレスが表示されます。HTMLファイルの方は、<form action="./A.cgi" method="post">のように修正し、CGIファイルの方には、以下のように記述してあります。何が原因でTITLEが表示されないのでしょうか? #!/usr/local/bin/perl use CGI qw(:standard); print<<END_OF_HTM; Content-type:text/html <HTML> <HEAD> <TITLE>XXXXXX</TITLE> </HEAD> </HTML> END_OF_HTM

    • ベストアンサー
    • Perl
  • CGIの処理結果をHTML内に表示したい!

    はじめまして。 CGI初心者です。 現在、とあるフリーのアンケートのCGI(perl)を改良していて、それは、アンケートに答えて、送信ボタンを押すと、CGIファイルの処理結果として、これまでのアンケートの集計結果がグラフで表示されるというものです。 その集計結果のみを、別ページ(左側や上部にメニューがあるもの)のHTML内に収めたいのです。 ※新しいウィンドウが開かなくてもOKです。 ※その別ページというのが私のオリジナルのページになります。 イメージとしては、 1)anket.html(アンケートに答える)  ↓ 2)anket.cgi(返答内容とこれまでの集計を処理)  ↓ 3)anket.html(集計結果が埋め込まれたHTMLファイルが表示される) 初心者なので、用語の使い方等間違っていましたらすいません。。 よろしくお願いします!

  • CGIなのにIE8のときキャッシュが残ってしまう

    jQueryの$.ajaxでPerl/CGIの出力結果を参照し、JavaScriptでそれを元に処理をしているのですが、XP/IE8環境でキャッシュが残ってしまう現象に遭遇し困っています。CGIの出力結果の時間に関係する処理なので、HTML上でタイムリーな表示にならず、とても困っています。Chrome、Firefox、Opera、Safariでは正常に動作しているのですが、IE8では動的であるCGIもキャッシュに残して参照する仕様になっているのでしょうか。

    • ベストアンサー
    • CGI

専門家に質問してみよう