cgiファイル内のコメント肥大化でレスポンスは低下する?

[上に] [前に] [次に]
真樹 [E-Mail] 1999/11/15(月) 14:55:39
表題の通りなのですが、cgiファイルを作成しているときに、
自分がわかりやすいようにコメントを入れますが、
友人が、
「コメントをいっぱい入れるとcgiのレスポンスが悪くなるんだよ。」
なんて言っていたのですが、本当でしょうか?

確かにコメント分はファイルサイズが大きくなりますが、そんなに違うものでしょうか?

そもそも、cgiはサーバで処理するもので、ローカルには落としてこないから、
(生成されるhtmlのサイズは別として)ファイルサイズは関係ないと思うのですが・・・。
コメントも読まずに無視されるから、負担にはならないとも思いますし・・・。

どなたか、白黒はっきりつけていただけないでしょうか?
お願いいたします。

さくらいゆずる 1999/11/15(月) 15:27:49
コメントはコンパイル時(実行時)には読み飛ばされるから平気だと
いうのをどこかで読んだ記憶がありますが。
でも気分的な問題もあって、大量のコメントは削除することが多い私(笑)。

無責任官庁 1999/11/15(月) 15:28:01
> コメントも読まずに無視されるから、負担にはならないとも思いますし・・・。

これはちょっと違います。
Cなどのコンパイラ言語は、実行時にはコメントは存在しないので良いですが、
Perlなどのインタプリタの場合は、ソースを読む→コメントの場合は無視という具合に、
実行時にI/Oと処理の分岐があると思われるので、
膨大な量のコメントを入れれば当然遅くなります。

で、どの程度入れればレスポンスに影響が出るかというのは、
マシンの性能だったりインタプリタの性能だったりで、
共通意見は存在しませんよね。

気になるようなら、CGIの最初と最後で時間を取得して、
実行にどれくらい時間がかかるのか測定してみては?
コメント大量に入れたCGIと、入れないCGIで。
“大量”というのが、人それぞれ基準が違いますので、
あなたが大量だと思うだけのコメントを入れてみたら良いと思います。

まあ、常識的な範囲でコメントを入れる分には、人間が気にするほど
レスポンスに差があるとは思えませんが・・・

ふじ 1999/11/15(月) 15:54:17
>、cgiはサーバで処理するもので、ローカルには落としてこないから、
>(生成されるhtmlのサイズは別として)ファイルサイズは関係ないと思うのですが・・・。

・CGI実行ファイル(スクリプト)の読み出し時のディスクアクセス
・(Perl等で書かれた場合は)Perlコンパイラの構文解析
に、ファイルサイズが効いてきます。

で、実験。
#-----------------------
use Benchmark;

$count = $ARGV[0];

@t = timethese($count , {
'comment on ' => '&read_eval("jcode.pl")' ,
'comment off' => '&read_eval("jcode_l.pl")'
});

sub read_eval
{
my($file) = @_;
my($buf);
open(IN, "< $file");
sysread(IN, $buf, -s $file);
eval $buf;
}
#------------------------
jcode.pl(v2.10 , 19900 byte)と、それからコメントを全て削った
jcode_l.pl(10463 byte)を作りました。

それを読み込んで eval する、というものです。
#実際にはディスクキャッシュに入っちゃうから
#ディスク読込み時の違いはほとんど見えなくなっちゃいますが。

結果。
300回ループ ($count = 300) で、
comment off: 10 wallclock secs (10.00 usr +  0.08 sys = 10.08 CPU)
comment on : 10 wallclock secs (10.24 usr +  0.08 sys = 10.32 CPU)

何回かやってみましたが、大体同じ結果です。
ほーんの少しだけ、コメントありの方が遅いですが。

(Linux 2.0.36 + Perl 5.005_60 + Celeron 400MHz + 64MB RAM)

B-Cus 1999/11/15(月) 20:50:48
> jcode.pl(v2.10 , 19900 byte)と、それからコメントを全て削った
> jcode_l.pl(10463 byte)を作りました。
どうやってコメントを削ったのですか? 僕は
 % sed 's/#.*$//' < jcode.pl > jcode_l.pl
としましたが、
 push(@to, ($opt =~ /d/ ? '' : $to[$#to]) x (@from - @to)) if @to < @from;
 s/(\%[!-~]|![\#\"&VW+,<])+|([^!%][!-~]|![^\#\"&VW+,<])+/&__z2h_jis($&)/ge;
などの行が途中で切れたので、手で修正…というアホらしいことをしました。

さっくりコメントを削除、ってなプログラムがあるんでしょうか?

> 何回かやってみましたが、大体同じ結果です。
こちらでも同じような結果になりました。


まぁ、目に見えて遅くなるほどコメントを書ける、というのも
それはそれで素晴らしいことだと思います。心ゆくまでコメント
付けましょう。

ふじ 1999/11/15(月) 21:16:44
>どうやってコメントを削ったのですか?
ソースをざっと眺めて(行の途中からのコメントがなさそうで
コメントの行は ;# で始まっているようだったので)

% perl -p -e 's/^;#.*$//s;' jcode.pl > jcode_l.pl

で消しましたが・・・洩れがあるかも(^^;

ふじ 1999/11/15(月) 21:20:40
>行の途中からのコメントがなさそうで
これ嘘。

grep してみたら行の途中からのコメントが10数行ありました。
全部で300行ほどあるので大勢には影響なし、ということで(^^;

B-Cus 1999/11/16(火) 11:18:54
# ふぅ、rm -rf / をやってしまって、復旧に一晩かかった。疲れた。

なるほど。何か方法があるのかなと思ったのですが、
そういうわけでもないんですね。まぁ、考えてみれば
コメントのみ削除なんて普通必要ないですか。

真樹 [E-Mail] 1999/11/16(火) 13:11:05
[[解決]]
みなさん貴重なご意見ありがとうございました。

やはり、コメントでは大きなロスは無いのですね・・・。
これで心おきなくコメントが書けます。(笑)



ありがとうございました。

[上に] [前に] [次に]