アカウント名:
パスワード:
コードキャッシュや事前パーシングぐらいじゃ実行速度の向上率は精々300%ぐらい。大したことないよ。http://php.y-110.net/wiki/index.php?PHP%A1%A7eAccelerator%20%A4%C7%20P... [y-110.net]インタプリタをバカにしてはいけない、というならせめてネイティブコードへのJITコンパイルぐらいしてくれないと。
でもそこまでやっても結局、非コンパイル型の動的言語って全部遅いんだよ。結局変数をスタックに置くのと、ヒープに置くのじゃメモリアクセスが最低一回分違うわけで、このペナルティはスクリプト言語である以上回避できない問題だ。あと、特にPHPはrequire周りとOOP機能を使った時のパフォーマンスが悪い(実感として)。.NET VMで動くC#ですらPHPに対して完全勝利してるんだから、PHPでいくら頑張っても最適化処理をちゃんとやったC++の足もとにも及ばない。
もちろん、PHP開発にはPHP開発の利点があるのは事実だが、Facebookほどに利用者数が膨れ上がったシステムを全部PHPで済まそうってのは非エコって言われてもしょうがないと思う。
ただ、PHPとC++を併用とか大変だから、C#+ASP.NETみたいな両方の良さを兼ね備えた素敵フレームワークが生まれたんだろうね。
コードサイズとか必要な情報が限られているので「最大で3倍」なのか「少なくても3倍」なのか判断できませんね。
>あと、特にPHPはrequire周りとOOP機能を使った時のパフォーマンスが悪い(実感として)。バイトコードキャッシュではinclude/require時の動作について、パスを走査する処理を改善しているとのこと。http://d.hatena.ne.jp/i_ogi/20070604/1180979055 [hatena.ne.jp]
さすがにFaceBookくらいの規模になると、やってるんじゃないですかねえ。mixiとかも。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
私はプログラマです。1040 formに私の職業としてそう書いています -- Ken Thompson
Facebookでは中間コードを使わないのだろうか (スコア:2)
インタプリタをバカにしてはいけない。
Re:Facebookでは中間コードを使わないのだろうか (スコア:3, 興味深い)
コードキャッシュや事前パーシングぐらいじゃ
実行速度の向上率は精々300%ぐらい。大したことないよ。
http://php.y-110.net/wiki/index.php?PHP%A1%A7eAccelerator%20%A4%C7%20P... [y-110.net]
インタプリタをバカにしてはいけない、というなら
せめてネイティブコードへのJITコンパイルぐらいしてくれないと。
でもそこまでやっても結局、非コンパイル型の動的言語って全部遅いんだよ。
結局変数をスタックに置くのと、ヒープに置くのじゃメモリアクセスが
最低一回分違うわけで、このペナルティはスクリプト言語である以上回避できない問題だ。
あと、特にPHPはrequire周りとOOP機能を使った時のパフォーマンスが悪い(実感として)。
.NET VMで動くC#ですらPHPに対して完全勝利してるんだから、
PHPでいくら頑張っても最適化処理をちゃんとやったC++の足もとにも及ばない。
もちろん、PHP開発にはPHP開発の利点があるのは事実だが、Facebookほどに
利用者数が膨れ上がったシステムを全部PHPで済まそうってのは
非エコって言われてもしょうがないと思う。
ただ、PHPとC++を併用とか大変だから、C#+ASP.NETみたいな
両方の良さを兼ね備えた素敵フレームワークが生まれたんだろうね。
ごめんなさい。
Re: (スコア:0)
コードサイズとか必要な情報が限られているので「最大で3倍」なのか
「少なくても3倍」なのか判断できませんね。
>あと、特にPHPはrequire周りとOOP機能を使った時のパフォーマンスが悪い(実感として)。
バイトコードキャッシュではinclude/require時の動作について、パスを
走査する処理を改善しているとのこと。
http://d.hatena.ne.jp/i_ogi/20070604/1180979055 [hatena.ne.jp]
さすがにFaceBookくらいの規模になると、やってるんじゃないですかねえ。
mixiとかも。
Re: (スコア:0)
違うっけ?
> .NET VMで動くC#ですら
「非コンパイル型の動的言語って全部遅い~.NET VMで動くC#ですら」
って文脈だとC#が非コンパイル型の動的言語のように見えますが、.NETはJITコンパイルされるんでは?
VMとは言うものの、JITコンパイルされた後は普通にネイティブコードで走るのでJavaのようなVMとは違いますし、ペナルティは非常に低いですよ。
# 文句ばっかり言ってますが「非コンパイル型の動的言語って全部遅い」には激しく同意します。