mod_Perlについての質問です。


最近、Perlにたよりっきりのプログラムを書いています。

しかし、いろいろなコードを書くうちにどうしても、これ以上速度を早くすることが不可能になってきました。

そこで、いろいろと調べたところmod_Perlというものがある事に気がつきました。

以下が自分の環境です。

どなたか、mod_Perlをスムーズにインストールできるサイトの紹介やmod_Perlについての解説をしていただけないでしょうか?

mod_Perlを使用する際の注意点などもいただければ幸いです。

おおめにポイントを差し上げます。

環境:
Windows XP SP2
Perl ver 5.8.8
Apache HTTP Server 2.2.3

回答の条件
  • URL必須
  • 1人20回まで
  • 登録:
  • 終了:2007/04/12 20:15:03
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答5件)

id:wnagata No.1

回答回数170ベストアンサー獲得回数18

ポイント20pt

http://www.din.or.jp/~bigstone/cgilab/cgitips/mod_perl.html

というページがありました。

コンパイルしてキャッシュする分高速に実行されますが、

その分メモリー消費量が増えるという問題がありますね。

Windowsで使用するための情報に関しては、

http://age.s22.xrea.com/mod_perl/

というページがありました。

ActivePerlを使用しているのであれば、ppmを使ってmod_perl

をインストールすると便利です。

id:zachouR

ありがとうございます!

非常に助かります。

2007/04/06 09:50:33
id:felix33 No.2

回答回数343ベストアンサー獲得回数2

ポイント20pt

ここが一番よく、簡潔にまとまっていると思います。

http://age.s22.xrea.com/mod_perl/

id:zachouR

ありがとうございます!

さっそくやってみますね!

2007/04/06 09:50:48
id:ootatmt No.3

回答回数1307ベストアンサー獲得回数65

ポイント20pt

http://www.apachefriends.org/jp/xampp-windows.html

こちらのアドオンはいかがですか?

一発インストールできるようです。

id:zachouR

わかりやすいです、ありがとうございます!

2007/04/06 09:56:27
id:furutanian No.4

回答回数112ベストアンサー獲得回数14

ポイント20pt

mod_perl は、主に Perl 起動時の OS の負荷、Perl スクリプトの中間コードへの変換コストを省くためのもので、Perl の処理自体が高速になるわけではありません。

http://ja.wikipedia.org/wiki/インタプリタ

ですので、プログラムの中でブン回しているループが遅いなら、効果はありません。そういう場合は、処理を工夫するしかなく、それにはプロファイラが有効です。

http://www2u.biglobe.ne.jp/~MAS/perl/waza/dprof.html

id:zachouR

ありがとうございます。

ループの中で10万回ほどの比較をする処理があります。いろいろと試してみたのですが、やはりこれ以上比較の処理は減らせないとして、なんとかしてスピードをあげれないものか、、、と考えていたのです。

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

2007/04/06 10:29:03
id:pmakino No.5

回答回数358ベストアンサー獲得回数30

ポイント20pt

Perl の高速化を希望されるのであれば、mod_perl の他にも SpeedyCGI や FastCGI といった選択肢もありますよ。

SpeedyCGI - CGIスクリプトを常駐させて実行することによりスピードアップさせます

lighttpd + FastCGI は mod_perl + Apache1.3 より1割ほど高速 :: Drk7jp


Perlの主なアクセラレーターの速度を比較 に示されているように、FastCGI や SpeedyCGI の方が mod_perl より高速です。

利用の手軽さ (いかに既存のコードを修正せずに利用できるか) という点では、SpeedyCGI が最も手軽に利用できます。場合によっては一切修正せずに利用できます。

mod_perl は、Apache のプロセスが激太りしてメモリ消費が非常に増える点 (メモリを大量に消費するという点は FastCGI や SpeedyCGI もそうですが、mod_perl は特に) や、Apache プロセス内部で動くため Perl 側の不具合が Apache 全体に悪影響を及ぼす恐れがある等の面からも、SpeedyCGI や FastCGI をお勧めしたいところです。


ただ、SpeedyCGI は Windows では普通には利用できませんので、coLinux を併用する必要があります。Cygwin でも動くかもしれませんが、未確認です。

FastCGI は Windows でも利用できるようです。(小粋空間: Windows XP 自宅サーバで FastCGI を利用する for Movable Type 3.34)


なお、いずれにしても、コンパイル済みのコードを常駐化することにより起動時のオーバーヘッドを減らすという基本的な仕組みは変わらないので、

ループの中で10万回ほどの比較をする処理があります。

というようなループ部分の高速化は望めません。

根本的にアルゴリズムを見直す (ハッシュを使うことでその部分をループでなくすることはできないか、等)、その部分だけ C で書く、SQL で一括処理できるような内容であれば DBD::SQLite を使う、等の工夫が必要です。

id:zachouR

回答ありがとうございます。

いろいろと調べましたが、単純な高速化でなんとかしようというのは、安易だったと思いました。

しかし、データベースは使うことが出来ないため、ソースをもう一度見直してなんとかするしかないな、と考えています。

ありがとうございます!

2007/04/09 09:56:09
  • id:furutanian
    そうであれば、素直にそのまま質問するとよいです。
    具体的にコードを出して、上手に相談すれば誰かがアドバイスしてくれるでしょう。
    #情報は出し惜しみしないほうがいいです。可能であればコード全部。
  • id:zachouR
    すいません、コードはある事情で出せないのです。

    本当はそれが一番早いのですが。

    コードに関しては、しばらく時間がたってから、もう一度質問し直してみようと思います。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません