CGI-BBS > CGI > Perl > どちらが低負荷でしょう?


カレッヂ
カレッヂ


質問者 鉄Cello  投稿日 10/12(金) 10:10:36
すみません、ご存知の方教えていただけませんか?

CGIから種々のHTMLソースを返す(出力する)場合に、

1.ヒアドキュメントや print命令を使い、全て一つのスクリプトで処理する。

2.必要に応じたサブのスクリプトを用意し、メインのスクリプトから呼び出す。

3.外部にファイルを用意し、それを読込んで(必要に応じて加工してから)出力する。

のようにいくつか考えられますが、サーバの負荷的にはどれが望ましいのでしょうか?
また、CGI(perl)の作法的にはどうなのでしょうか?

全部を一つに押し込むとメインテナンス性が悪いなぁと思うのですが...。
回答者 呑兵衛  [削除]  投稿日 10/14(日) 00:58:47
呑兵衛@大阪です。

perl は sub require use で宣言されたスクリプトやライブラリは、いったんすべて読み込みます。
その後、スクリプトの進行にしたがって必要なものだけ読み込み、処理を行います。
なので、
どんな構成にするかは、設計者の好み、またはメンテのしやすさ、require や use など
スクリプトの先頭で宣言されたライブラリが頻繁に読み出される機会を、
スクリプト上で制御したい、などによって変えるべきでしょう。
また、どの程度の処理をするか、が本当の負荷を考えるキーだと思います。

cgi の処理に1秒以上かかるのはだめスクリプト、と言って憚らない方の多い世界ですので。
質問者 鉄Cello  [削除]  投稿日 10/16(火) 15:54:09
呑兵衛さん、色々とありがとうございます。

携帯電話への対応や、いくつかのフォームを用意しようとすると
一つのファイルでは数十kBのスクリプトとなってしまい、
質問をしました。

例えば、フォームなどは外部にファイルとして用意し、
これらを必要になった時点で読み込み、場合によっては
内容を一部書き換えて出力すれば、メモリを喰わずに
済むのだろうと考えた訳です。
(正確にはファイルを開く分余分に必要ですが、同時にいくつも
開くわけではないので、それほどではないかと...)

フォームはホームページ用のソフトで作った方が速いですし。
(もちろん修正は必要ですが)

ただ、そのようなスクリプトにはお目にかかれないので、
perlの流儀では、出来るだけ一つのファイルに収める様に
書くものなのかと、思った次第です。

数十kB程度のファイルなんて、普通なんでしょうか?

返信(回答)する


Web裏技