web-dev-qa-db-ja.com

PHPを縮小するポイントはありますか?

私はあなたを知っていますcan PHPを縮小しますが、何かポイントがあるかどうか疑問に思っています。 PHPはインタプリタ言語なので、コンパイルされた言語よりも少し遅くなります。私の質問は、PHPを縮小する場合、クライアントはページの読み込みなどで目に見える速度の改善を見ますか?

また、PHPまたは同様のものをコンパイルする方法はありますか?

96
Bojangles

PHPはバイトコードにコンパイルされ、VMに似たものの上で解釈されます。 PerlやRubyなど、他の多くのスクリプト言語も同じ一般的なプロセスに従います。これは、たとえばBASICなどの従来のインタープリター言語ではありません。

ソースを「縮小」しようとした場合、効果的な速度の増加はありません。 APCのようなバイトコードキャッシュ を使用すると、大幅に増加します。

Facebookは、 HipHop という名前のコンパイラを導入しました。このコンパイラは、PHPソースをC++コードに変換します。RasmusLerdorfは、大きなPHP 今年初めのDiggのプレゼンテーション これはHipHopによるパフォーマンスの改善をカバーしています。要するに、コードの最適化とバイトコードキャッシュの使用ほど高速ではありません。HipHopは大多数のユーザーにとってはやり過ぎです。

Facebookは最近、HipHopの作成に基づいた新しい仮想マシン [〜#〜] hhvm [〜#〜] も発表しました。それはまだかなり新しいものであり、一般の人々に大きなパフォーマンスの向上をもたらすかどうかは明らかではありません。

明示的に記載されていることを確認するために、 そのプレゼンテーション をすべてお読みください。また、Facebookの xdebugxhprof などのツールを使用して、コードのベンチマークとプロファイリングを行い、ボトルネックを特定するさまざまな方法を指摘しています。

155
Charles

いくつかの書き換え(短い変数名)を使用すると、数バイトのメモリを節約できますが、それもあまり重要ではありません。

ただし、インクルードスクリプトを連結できるようにいくつかのアプリケーションを設計しています。 php -w大幅に圧縮でき、スクリプトの起動速度が少し向上します。ただし、オペコードが有効なサーバーでは、これはファイルのmtimeチェックをいくつかしか保存しません。

3
mario

これは広告よりも答えです。私は、静的型付けを使用してPHPで実行するようにZendオペコードを変換するVM拡張機能に取り組んでいます。任意のPHPコードを高速化しません。通常のPHPが許可するよりもはるかに高速に実行するコードを作成できます。ここで重要なのは静的型付けです。現代のCPUでは、動的言語はブランチの予測ミスによるペナルティを左右に食いつぶします。 PHP配列がハッシュテーブルであるという事実も高コストを課します。多くの分岐予測ミス、キャッシュの非効率的な使用、メモリプリフェッチの貧弱さ、およびSIMD最適化はまったくありません。特にブランチの予測ミスとキャッシュミスは、今日のプロセッサにとっては不利な点です。私の小さなVMは、ハッシュテーブルの代わりに静的型とC配列を使用することで、これらの問題を回避します。結果は、約10倍速くなります。これはバイトコードの解釈を使用しています。拡張機能は、オプションでgccを使用して関数をコンパイルできます。その場合、2〜5倍の速度が得られます。

興味のある方へのリンクは次のとおりです。

https://github.com/chung-leong/qb/wiki

繰り返しますが、拡張機能は一般的なPHPアクセラレータではありません。それ専用のコードを書く必要があります。

3
cleong

PHPを縮小する必要はありません。パフォーマンスを向上させるには、Opcodeキャッシュをインストールします。理想的な解決策は、PHPを5.5バージョン以上にアップグレードすることです。なぜなら、新しいバージョンにはデフォルトでZend Optimiserというオペコードキャッシュがあり、他のバージョンよりもパフォーマンスが高いためです http://massivescale.blogspot.com/2013/06/php-55-zend-optimiser-opcache-vs-xcache.html

1
firewall

PHPコンパイラ...リストを参照してください この前の質問 があります;ただし、Facebookのサイズであるか、クライアントを実行するアプリケーションをターゲットにしている場合を除き-側)彼らは一般的に彼らが価値があるよりもはるかにトラブルです

シンプルなオペコードキャッシングは、関連する作業により多くの利益をもたらします。または、コードをプロファイリングしてボトルネックを特定し、それを最適化します。

1
Mark Baker

はい、1つ(非技術的な)ポイントがあります。

ホスティング事業者は自分のサーバーでコードをスパイできます。縮小してifyくと、スパイがアイデアを盗むのが難しくなります。

PHPを縮小化およびu化する理由の1つは、スパイ保護です。いコードは自動展開の1ステップであると思います。

0
Dieter Porth