• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ライブラリと処理速度について)

ライブラリと処理速度について

Head_Syndicateの回答

回答No.1

ご疑問ももっともだと思います。むしろPerlにとってはライブラリファイル の開け閉めの時間が余計に増えるわけですから、厳密に言えば むしろわずかに重くなるように思います。 その説明の言わんとしているところは、「不要なときはそのライブラリ を読みこまなくてすむことがある」ということなんじゃないでしょうか。 例えば、掲示板のCGIで、書きこみ用のサブルーチンなどを別ファイルに しておき、書きこみのときだけrequireするようにすれば、 単に閲覧するだけのときなどはそのサブルーチンをコンパイルする 時間が省略できるので少しだけ早くなるでしょう。 それくらいしか思いつきませんね。 状況、お察しします。CGIプログラムのレベルでできる、アルゴリズム だのによる工夫はすでに検討されていると思いますので、あとは、 処理を別のサーバに分散させるとか、そういった大きな変更しかない でしょうね。自前サーバであればmod_perlを導入すれば劇的に 変わると思いますが…。

ieyasu
質問者

お礼

ご丁寧にありがとうございます。 つまり、本体プログラムとそうでない部分(ユーザーごとに追加選択的に処理を行うような部分)は場合によっては切り離した方が若干なりとも速くなるって事ですね? たとえば、チャットCGIにおける、発言ランキングの別窓リスト表示部などがそうでしょうか? あと、mod_perlって何ですか?そんなに速いのですか? Perlとは違ったスクリプトを組むのでしょうか? 私は自前ではないですが、ホスティングサーバーを借りていて、結構自由度が高いんですが、その場合どうでしょう? って、質問ばかりすみません。。(^^;;

関連するQ&A

  • requireしたライブラリにuseを記入

    メール送信のプログラムを作っています。 本体のプログラムmain.cgiから、 メール送信用のサブルーチンを記入した、 email.plというのを require 'email.pl'; とメール送信が必要な場合だけ読み込んでいます。 この email.plに use Encode; や use Jcode; のようにuse文を記入するのは、 Perlの作法としては適切なのでしょうか。 それともuse文はmain.cgiに記入するのが適切なのでしょうか。 email.plにuse文を記入しても動きますし、 main.cgiにuse文を記入した場合とベンチマークを比べたりしましたが あまり変わらないのですが、 useはコンパイルしたときに実行されるので、 実行のときに読み込まれるrequireしたライブラリに記入していいのか不安なのです。 私としては必要なときだけ読み込みたいので、 email.plにuse文を記入したいのですが。 どうぞよろしくお願いします。

  • サブルーチン Perl みたいに C言語 で使うには 

    いままで数年HPを運営していたためにCGIを開発する手段として、Perl言語を使用してきました。その後、あるきっかけでC言語をするようになり、理屈上PerlとC言語が似ていました。 いままで、Perlでは開発・デバッグ等を効率よくするためサブルーチンを他のファイルにパッケージファイルとして開発していました。非常に便利でこれがC言語でも同じく使えたらいいなとつくづく思っています。 Perl言語の例 main.cgi(本体のファイル) package.pl(パッケージファイル) 本体ほファイルで実行させ、実行の途中必要なサブルーチンをパッケージファイルから呼び出します。 呼び出すには、 %渡す値=&パッケージ名::サブルーチン名; 同じようにC言語でやるときはどのようにすればいいのでしょうか?

  • ライブラリ化するとメモリを圧迫する?

    perl で、数々の処理を一つのファイルにまとめて しまい、その都度、関数を呼び出して使う、という ライブラリ化 ( モジュール化? ) は常套手段だと 思うのですが、ひとつ気になってきました。 require "jcode.pl" ・・・みたいに、プログラムの頭の方でインクルード のようなことをします。するとそのファイルのサイズ 丸々がメモリに入るのでしょうか? つまり、ライブラリファイルが大きければ大きいほど メモリを圧迫し、処理速度に影響したり、何メガも あったりすると読みきれないとか、何かと影響は 出てこないものなのでしょうか。 いま、perl で組んでいて、一つのファイルにぜんぶ まとめてしまうのが心配になってきました。

    • ベストアンサー
    • Perl
  • ダイナミックリンクライブラリについて。

    ダイナミックリンクライブラリで、共通な処理(サブルーチン)を集めたプログラムです。という回答を頂いたのですが。どういう事でしょうか?ご教授頂けると幸いです。すみませんが。 結局、そのダイナミックリンクライブラリには、全てのソフトで、共通する処理をその中にまとめて、その中から、ファイルを開くということを呼び出すということでしょうか?ご教授頂けると幸いです。すみませんが。

  • 「.pl」ファイルはサブルーチンのようなものなのですか?

    掲示板スクリプトなどを落としてファイルを見ると、「.pl」というファイルがたまにあります。 これはサブルーチン的なやくわりがあるのですか? もしそうなら、どうしてわざわざ「pl」に書き分ける必要があるのでしょうか。すべてひとつの.cgiに書けばいいのに。

    • ベストアンサー
    • Perl
  • サブルーチンを外部ファイルでまとめる。

    幾つかのサブルーチンを複数のCGIで利用します。 現在は各CGIにまったく同じサブルーチンを書いていますが、美しくないです。 これを別ファイルにまとめて呼び出して利用と言うのは出来ないのでしょうか? 試しに「set.pl」や「set.ini」でサブルーチンを保存し、「require」で呼び出そうとしたのですが、500エラーが出ました。 何か設定が必要でしょうか?

    • ベストアンサー
    • Perl
  • 'cgi-lib.pl'などのファイルの位置は?

    Perlの基本的な質問ですが、cgi-lib.plやjcode.plは どのディレクトリに入れれば自然でしょうか? 私はLinuxとWindowsの両方にPerl5.6を入れておりまして、今までは相対パスによって、スクリプトの近くに置いていましたが、ディレクトリ(フォルダ)が変わるごとに設定しなおしで面倒になってきました。 WEBでもレンタルサーバーなど利用したことは無いんですが、このような基本ライブラリは、require 'cgi-lib.pl';で呼び出して?いると思いますが、 しかるべき位置にこのファイルが無いとだめだと思います。ご教授ください。

    • ベストアンサー
    • Perl
  • ファイルのアップロード方法(Perl)

    <INPUT TYPE="file">で指定されたファイルをサーバーにアップロードする方法をさがしています。 CGIの記述言語はPerl、転送を行うファイルは画像ファイルです。 送られてきたデータを確認したところユーザー側のファイルへのフルパスなのは確認できましたが、そこからアップロードする方法が分かりません。 パールライブラリ(.plか.pm)でファイル転送を行う良いライブラリがあれば教えてください。 また、転送の方法を教えてください。

    • ベストアンサー
    • Perl
  • pl

    a.cgiファイルがあるとします。 同ディレクトリにa.plがあるとします。 a.cgiにあったものをa.plの関数(サブルーチン)に移し a.cgiで呼び出したら負荷は軽減されますか? 文才ないのでわかりにくかったらこっち見てください。 a.cgi(HTMLソースが1000行あるとします) それを全部消し、a.plに移します。 そのa.plをa.cgiで呼び出したらかわりますか?

  • Perlのライブラリのパスの設定方法?

    Perlで使うオリジナルライブラリとjcode.plなどの標準的なライブラリをサーバーで配置しようと考えていますが、今まではApacheのDocumentRootに置いていました。 アパッチのエイリアスやバーチャルドメインを使っていると、これらのライブラリを一元的に扱うことが出来ないので、相対パスのコピーで対処しておりました。 スマートなライブラリ管理方法はありますか? 一元化でき管理が簡単(入れ替えやライブラリのアップグレードが簡単) な方法が知りたいです。 あと、pmファイルはよく知らないのですが、このような管理方法は よい技でしょうか?

    • ベストアンサー
    • Perl