【perl】速いのはどっち?【php】
で、結局のところどっちが軽いんだよ? 教えろマニアども mod_perl > mod_php + eaccelerator > mod_php > perl cgi > php cgi >>>>> ruby cgi いいえ。微細な気にする人はまず鯖を新調しなさいということです。 言語処理系としては、Perlの方がPHPより速い。 PHPが速いと言われるのは、処理系の遅さが目立たない小さめのスクリプトを、mod_php で動かした場合、Perl/CGIと比べて速いという事。 スクリプトが大きくなると、処理系の遅さが目立って来る。 近頃はFWを使うのが流行りだが、FWを入れると当然サイズがでかくなるので、実行速度を 求める場合には向かない事になる。 Perlは、CGIとして動かす分には遅いが、mod_perl,fastcgi,speedycgi等を使用すれば、CGI のコストから開放されて、とても速くなる。 上記のものを使うと、少なくともmoduleはメモリ上にcacheされるので、FWなどとの相性も 良い。 PHP,Perl/CGI,CGIじゃないperlを比べると、ほとんど何もしない様なスクリプトの場合、PHP が一番速いが、ある程度意味のあるサイズのコードになると、CGIじゃないPerlが速くなる。 ちなみに、やることが簡単で、どうしても速度が欲しい場合は、Cでapacheのmoduleを書く と良い。簡単な処理しかしないのであれば、言語は何を使っても書くための手間はさほど 変わらないが、処理速度は、桁違いに向上する。 詳しいことはわかんないけど、扱うデータがでかくなったり処理が 複雑になったとしても、MySQLとかが使えるphpのほうが結局速くて お手軽なんじゃねーの? >>36 なんで言語の比較にApacheやフレームワークが出てくるんだよ。バカだろ、しねよ。 つー事でPHPなら数秒で終わる計算がPerlなら何分かかるかここに書き込んでみろってんだ。 小便チビりながら半べそかいて逃げ出すなよ。 --- PHP --- <?php $x = bcpow(10, 30); for ($i = -1; $i <= 1; $i += 0.00001) { $y = bcmul(sprintf("%.4f", acos($i)), $x); } ?> --- Perl --- use POSIX qw/acos pow/; use bignum; $x = pow(10, 30); for ($i = -1; $i <= 1; $i += 0.00001) { $y = sprintf("%.4f", acos($i)) * $x; } ・・・・Perl6マダー(´;ω;`) >>37 > MySQLとかが使えるphpのほうが結局速くて Perlでも使えるだろw >>38 両方ともモジュールでやったらPerlの方が早かったよ。 >Perlは、CGIとして動かす分には遅いが、 サーバー上でうごいてるのはほとんどそれってことだろ? speedycgi >これは、 Perl 処理系をメモリに常駐させることで、 >CGI プロセス起動時に処理系の起動によるオーバーヘッドをなくすための >仕組みです。 でもレンタルサーバの殆どでサポートされてない。 つまり、サーバーに負担が懸かるからだろ? mod_perl >mod_perlの利用はPerlによるCGI使用者にとって、かなり魅力的ですが、 >実行スクリプトの量によってはメモリ消費が多くなることも忘れてはいけません。 >また、通常のCGIスクリプトは、おそらくmod_perlでは動作しませんので、 >mod_perl用に注意深くコードを書き換える必要があります。 コードを書き換えなきゃならないんだったら、おなじperlとして扱うのは どうかと思うが。 で、やっとphpと同じくらいのスピードなんだろ? マニアのくせに大事なこと言わないんだもんなぁ。 >>44 それは言語の問題じゃないよ。 言語速度ならPerlが速いが大きな差が出るほどではない。 お手軽に速度出したいならPHP コスト掛けて堅牢かつ速度出したいならJava 純粋に速度を出したいならC 変態志向の人はPerl >>43 レン鯖でmod_php使えるところはセキュリティやばいぞ >>43 それ言うならPHPの方がサーバーに負担かかってる speedycgiとmod_perlはレンサバではセキュリティの問題が出るんじゃない? PHPなら一応セーフモードがあるけど。 speedycgiは文字通りCGIでも動くからsuexecが有効だぞ。 mod_phpよりは安全。 >>51 module系を共用鯖で使う方がおかしい >>52 で、cgiで動かしたら遅くなるんだろ? いつまでもピントのずれたこと抜かしてんじゃねーよw 両方とも同じCGIで動かしたらPerlの方が速い。 同じモジュールで動かしてもPerlの方が速い。 PerlはCGI、PHPはモジュールで動かしたら そりゃ当然PHPの方が速いけど、 クラックされる危険性がある。 >>54 mod_phpよりは早いよ。ピントがずれてるのはお前だ。 perl→cgiで動かすのが一般的 php→モジュールで動かすのが一般的 どの言語でも大抵、cgiよりもモジュールのほうが速い 同じモードで動かせば、phpよりperlのほうが速いが、 perlはモジュールに対応するために書き換えなきゃならないし 自前鯖でない限り環境整備は難しい この部分は結論でたな これに異論あるマニアはいるか? それとだ、クラックされる危険性があると言うけど、 ていうかそんなにphpがヤバかったら企業系サイトで こんなに使われる訳ねーとおもうんだが perlだって絶対に安全って訳でもないんだろ? つか、安全性はphpかperlかの問題じゃなくて、 cgiモードかモジュルモードかの問題なんだろ? ここんところはっきりさせてくれ >>60 クラックされる危険があるのは、mod系を共用鯖で使った場合。 パーミッションを考えれば自明の理。企業鯖で共用鯖とかまず無いから。 仕方なく共用鯖で使う場合にセーフモードなんて緊急手段があるわけで。 で、mod_perlに対応するための書き換えとか言うけど、最初からちゃんと strictなもの書いてればそもそも書き換え要らない。 >>61 ハッキリできたら誰も苦労しない。 > 企業鯖で共用鯖とかまず無いから。 たくさんあるぞ。 中小企業のほとんどは共用サーバーだ。 VPSなら問題はないな 共用鯖でも大部分はsafemodeでしょ。じゃなきゃ怖すぎる。 ちょっと待ってくれ このスレでは速さだけが問題でセキュリティは二の次じゃないのか? >>64 VPSは専用サーバーと変らん。 管理に金がかかる。 セキュリティが二の次だと言うのなら、 perlはcgiでphpはモジュールなのが多いということも二の次だ。 両方モジュールで動かしたらperlの方が速い。 最近佐賀ネタでスレ違いの書き込みが増えている。 佐賀県庁・佐賀県警・談合・痴漢・情報漏洩などの内容だ。 銀行が潰れるとしたデマが回り騒ぎが起きたこともある。 このような書き込みは慎むべきだ。 被害防止のため常駐するスレに啓蒙してくれ。 >>66 じゃperlの方が早いということで 終了 ttp://www.ryuichi.jp/computer_memo/etc/template_time_match/ (mod_perlの場合) >「 2 回 目 か ら は コ ン パ イ ル が ス キ ッ プ さ れ る の で 」 したらCとかC++とかと較べなきゃ(笑) 全然遅いんだろ、perlのほうが PerlとCでは言語的な速度ではCの方が速いですが Perl/mod_perl、C/CGIの場合オーバーヘッドの分Perl/mod_perlの方が速い場合があります。 PHPとPerlでは言語的な速度ではPerlの方が速いですが PHP/mod_php、Perl/CGIの場合オーバーヘッドの分PHP/mod_phpの方が速い場合があります。 ここで「Cと比べなきゃwww」と思うような思考がPerlとPHPの速度に関して定期的に起こる 不毛な議論の原因となっているのでは無いでしょうか。 >>71 Cの場合はmodule作れちゃうから最速なのは当たり前。 ここではもっと低次元な争いをしてるので高次元の方はお引き取りください。 >>72 基本的に同意なんだけど、sortとか文字列処理がややこしい場合、Cを使って自分で 書いたクソコードより、perl使ったものの方が速い事がありそう。 perl,php,java,cのどれが良いかなんていう話は、はっきり言って不毛だと私も思う。 問題に応じて適した処理系を選択する、と言う方向に発想が行かない所が悲しいね。 perlを習得できずにPHPに逃げたやつが、 目の敵にしてるだけ。 どっちもできる側からすれば、どーでもいい。 >>73 perlでもapacheのmodule作れる。それをするための仕掛けがmod_perl。 Cでも、apacheのmoduleにすると当然速いが、CGIにすれば、そう速いと言う程でもない。 やる事にもよるけどね。 perlは速くて優れた言語だよね 廃れる一方だけどw mod_perl自体が速いんじゃなくて、 二 回 目 以 降 は コ ン パ イ ル を ス キ ッ プ し て い る の で 速いんだろ? >>72 はなにとんちんかんなこと言ってんだ? >>75 も寝ぼけてるね phpもperlもそんなに変わらないだろ ていうか小難しいうえに処理も遅かったら最悪じゃないの、perlってw >>80 PHPがperlと比べて速いと言われたのは、Perl/CGIとmod_phpを比較しての事だった。 また、 > phpもperlもそんなに変わらないだろ では、phpとperlの習得の難易度は大差ないと言いつつ、次の行で、 > ていうか小難しいうえに処理も遅かったら最悪じゃないの、perlってw perlは小難しいと言っている。 どっちだと言いたいんだろうか。 おまえ馬鹿じゃないの?w 75が >perlを習得できずにPHPに逃げたやつが、 と言ってるから >ていうか小難しいうえに処理も遅かったら最悪じゃないの、perlってw て言ってやったんじゃないの perl厨ってほんと頭悪いよね それとさ (mod_perlは) >二 回 目 以 降 は コ ン パ イ ル を ス キ ッ プ し て い る の で いい加減この部分とスピード比較のリンク先よめよ >>83 いやさ、「コンパイルをスキップ」の部分を懸命に強調してるけど それで速くなってるなら全然問題ないと思うのだが何が言いたいの? 言語として早いんじゃなくて、コンパイル飛ばすから速い訳だろ? といってんだよボケ このすれのいちがあたまわるいしつもんしてんだからふもうなレスになるのはしょうがない。 >>85 「言語として速い」って意味ワカンネ インタプリタの速度の事言ってる? PHP なんかに信者がいるとは思ってなかったがやっぱりいるんだねえ。 アホにも使えるのはある意味利点だが、 ほかのいいものを知ろうとしなくなるというのは大きな欠点だ。 彼らにはPHPが唯一無二の存在だから尚更その傾向が強いんだろうね。 昔はPerl使いにもそういう奴がいたんだろうけどWEB用途でのPerlが廃れていくにつれ 減少するかPHPに流れるかしてしまった。 >>85 じゃあmod_phpはコンパイル飛ばさないの?w マジレスすると飛ばさないよ。だからコードの制約がゆるい。 浮くコストはインタプリタ読み込みの部分。 >>72 に聞けよ 言語そのものの処理速度(=モジュールかCGIかに影響されない速度) ということじゃねーの? phpとperlを同じ条件で較べろと言ってるんだから、そうするとしたら、 コンパイル作業込みの一回目で計測しなきゃおかしいだろ。で、この場合、 リンク先によるとphpのほうが速いってことになる 同じくコンパイルをスキップした速度を較べるなら、phpAとかと 較べなきゃオカシイってことになるだろ ちなみにこのphpA、普通のphpの四倍くらいで動くらしいから、 phpよりちょっと速いくらいのmod_perlなんか比較にならないだろ ようするにおれが言いたいのは、perl厨は屁理屈と嘘ばっかり言いやがって、 馬鹿じゃねーのかってことだよ うっかり騙されるとこだった >>92 屁理屈こねてるのはどう見ても貴方です。本当にありがとうございました。 >>92 まず根本的に、異なるテンプレートエンジンで言語速度を比べることは出来ない。 それとPHPAの動作原理を理解して欲しい。毎回描画計算するアセンブラより早くなるケースがいくらでもある。 >コンパイル作業込みの一回目で計測しなきゃおかしいだろ。 forkするだけのCGIでの比較はバイトコード変換〜実行完了までの純粋な速度を算出出来る。 純粋な処理速度を出したいのならπの計算などを http://homepage3.nifty.com/hippo2000/perltips/phpperl.htm のような計測方法でやればいい。 perl厨は屁理屈と嘘ばっかり、自分は絶対に正しいという固定概念を取り払って 冷静に考えてみるのがよろしいかと。現状は議論するに値しない mod_perlはファイルが更新されていなければ(設定次第だけど) コンパイルを飛ばす(メモリにコンパイル済みのプログラムを保持してる)ので結構早い mod_phpは毎回コンパイルする だから単純に考えるとmod_perl>mod_php? だけど共有鯖だとセキュリティがだめ CGIの場合 perl,phpともにプロセス起動のオーバーヘッドがあるから速度はもちろんapacheのモジュールより遅い どっちも大して違わないからCGIとして使うとperl=php? まあapache使わずにアセンブリでHTTP鯖書くのが一番早いってこった >>96 以前、abではベンチ取った事があるんで今更かなと。 php信者にベンチ取って貰った方が楽しめそうだし。 言語(インタプリタ)の処理速度がとか言いつつ、テンプレートエンジンの比較をしたリンクを 持ってくるあたり、十分期待できる。w 速度速度って、サーバ分散すりゃいいじゃん。 というか、そんな微々たる差なんてのはプログラムの組み方が悪い時のボトルネックを追い抜くことゼッタイないし。 PHPもPerlでも組み方次第でどうとでもなるし。 アプリケーションの特性によってボトルネック部分は変わってくるし。 言語なんて関係なくね? JavaだろうがCだろうが、悪い書き方したらとんでもなく遅くなって使い物にならなくなるし。 ふつーに考えて速度よりも保守性が大切になることのが多いし、遅かったらプロファイリングなりベンチマークなりでもして 該当個所だけ改善すればいいんじゃ? おまえらいつまで馬鹿みたいなこといいあってるんだ? 言語の速度を議論しているスレで > 言語なんて関係なくね? だとさ。 勝手に分散スレに行ってくれよ。 オラオラオラー おまいら能書きばかりでちゃんと計測してんだろうな。 オラオラオラー >>38 をPerlが得意とするコンソールで実行して何分かかったんだ?あ? オラオラオラー Perlみたいな糞遅いもんの測定には右下の時計で十分すぎるな。 オラオラオラー >>38 はPerlの遅さを証明する氷山の一角に過ぎないからな。 オラオラオラー 悔しかったら速いコード書いてみろよ。 オラオラオラー どうせできないだろうけど。ウププ 今日のところはこれくらいで勘弁しといちゃるからもういっていいぞ。 >>99 おまいのレスを見ながらいちいちググってみたけど 結局何が言いたいのかさっぱりわかんねぇ モジュールでも、コンパイル済みでも、cgiでも結局phpのほうが 速いのに違いはないんだろ? なにがphpAの仕組を理解しろ、だよ 二回目以降はコンパイルすっ飛ばす点じゃmod_perlと一緒だろ アセンブラより速いんだったら大いに結構じゃねーか 最近あんまベンチとってなかったので調べてみたら予想以上にPHP速いね。 PHP4の最初の頃に調べたときは何をやってもPerlより遅いみたいな印象だったけど 最新のだと空ループや正規表現までPerlを追い越してる雰囲気。 あるいはPerlが肥大化で遅くなった? ハードで簡単に解決できないPHPよりPerlのほうが100倍速いみたいなの今でもある? 進歩が止まったものは追い越される運命なのか。。。 ベンチマークの取り方にもよるけど、おおむねPerlの方が速い。 ただし、mod_phpとかのウェブのアプリケーションサーバとしての速度になると単純な速度比較は出来なくなる。 結局はプログラミングスキルの方が重要なんだけどね。 Perlのほうが速いと思っていたようなのまでPHPのほうが速いんだけど。 どーゆーことさ。。 $i = 10000000; while ($i--) { $x = $i * 2; $y = $i / 2; $z = $i << 1; } perlのほうが処理が速いっていうのは、 全然根拠のないデマだよ。 速度気にしてもあまり意味無いけど PHP5>Perl5>PHP4かな。 Perl6は遅いんですよね? PHP4は論外として、PHP5.1は確かにかなり速くなった。 >>111 のような単純ループはPerlと大差ないか、むしろ速いかも。 しかし、PHPの最大の問題はその言語仕様の貧弱さ。 配列も連想配列も同じ扱いだから、配列操作が遅い。 >>111 のコードを、 $i = 10000000; $arr = array() while ($i--) { $x = $i * 2; $y = $i / 2; $z = $i << 1; $arr[] = array($x,$y,$z); } と変えると途端にPerlより圧倒的に遅くなる。 もうひとつの問題はメモリの使用量。 上のようなコードをPerlと比べると数倍消費する。 perl、php比較スレってマジレス傾向になるとスレが盛り上がらなくなるな。 文字列をゴリゴリするならPerl 呼び出してすぐ終わるならPHP なんとなく気が向いたらRuby ソフトバンクのMNPシステムならN88-BASIC CGI に対する mod_perl の利点ってコンパイルの省略以外に,共有メモリを使っ た複数リクエスト間でのデータの共有が考えられると思うんですが,これがあ まり話題にならないのは何故なんでしょうか? いくらスクリプト言語でも,計算より I/O の方が "桁違い" のオーダーで遅い んだから,重要だとおもうんですが. それは一般的に言われている共有メモリとはちょっと違うと思うよ。preforkだと同じプロセス間だけだし。 Perl/CGIからでも利用できる共有メモリモジュールがあるしPHPにもshmop関数がある。 >それは一般的に言われている共有メモリとはちょっと違うと思うよ。 いえ,一般的な共有メモリのことです. mod_perl になって常駐するようになれば,共有メモリ使って prefork の子プ ロセス間でデータを共有できるようになりますよね? >Perl/CGIからでも利用できる共有メモリモジュールがあるし CGI だと毎回プロセスが終了しちゃうから意味無いよー. 意図的にデストラクトしないから再び同じプロセスを利用したときに再利用出来るという永続化の利点であって 一般的に共有メモリと聞いて連想するCのshm関数等とは全く性質が違うと思う。 >CGI だと毎回プロセスが終了しちゃうから意味無いよー. 共有メモリに入ってるデータは呼び出し元に関わらず自分で解放するまでは残ったままだよ。 なので敢えてCGIと書いた。 最大maxclientsの数だけ確保しなきゃいけないのだからそれほど効率良くないと思う。 2chもdatを共有メモリに置いてると聞いたけどどういう方法でやってるのかな。 >共有メモリに入ってるデータは呼び出し元に関わらず自分で解放するまでは残ったままだよ。 あー,そうですね...とんちんかんなこといってた. >最大maxclientsの数だけ確保しなきゃいけないのだから これよく分からないんですが,何の確保の事でしょうか? 例えば1MBのデータを使い回すとして IPC::ShareLite等なら1MBの共有メモリだけで済むけど mod_perlだけでやろうとしたら予測されるapacheのプロセス数×1MB必要でしょ。 mod_phpの方がパフォーマンス高いのは意外だったな。 PHPは5.1で2倍くらいに速くなってたか。 ごく単純な処理だけならPHPの方が起動にコストがかからずに早い。処理が複雑になると、Perlに勝てなくなる。 read.cgi ver 07.5.0 2024/04/24 Walang Kapalit ★ | Donguri System Team 5ちゃんねる