人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

●質問者: zachouR
●カテゴリ:コンピュータ インターネット
✍キーワード:Apache HTTP mod_perl Perl Windows XP
○ 状態 :終了
└ 回答数 : 5/5件

▽最新の回答へ

1 ● wnagata
●20ポイント

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

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

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

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

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

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

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

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

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

◎質問者からの返答

ありがとうございます!

非常に助かります。


2 ● felix33
●20ポイント

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

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

◎質問者からの返答

ありがとうございます!

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


3 ● ootatmt
●20ポイント

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

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

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

◎質問者からの返答

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


4 ● furutanian
●20ポイント

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

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

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

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

◎質問者からの返答

ありがとうございます。

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

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


5 ● まきのっぴ
●20ポイント

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 を使う、等の工夫が必要です。

◎質問者からの返答

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

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

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

ありがとうございます!

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ