PHP 5.4 のアップデートリストには、「Zend エンジンのパフォーマンスを向上させ、メモリ使用量を削減しました。
」という一文があります。では、どのように改善されているのでしょうか?
不要なハッシュテーブルを避ける
PHP では、クラス属性/静的属性/定数はすべて Hashtable に格納されることがわかっています。以前は、クラスが属性/静的属性/定数を宣言していなくても、Zend エンジンがそれらに Hashtable を割り当てていました。
現在、このプロセスは最適化されており、要素がある場合にのみハッシュテーブルが割り当てられます。
これにより、一部の emalloc/efree 操作が回避され、メモリ使用量がいくらか削減されます。
四次最適化
PHP では、実際に実行されるのはオペコードです。1 つのオペコードには、result、left、right の 3 つの固定オペランドが含まれています。以前は、When there など、まったく使用されなかった場合でも、これら 3 つのオペランドのそれぞれに zval が含まれていました。右側のオペランドがない場合は、zval が右側のオペランドに割り当てられます。現在、すべてのオペランドには zval が直接含まれなくなりますが、各 op 配列にはリテラル テーブルが含まれます。
また、znode もそれに応じて調整されました。
このようにして、以前の (32 ビット オペレーティング システム) オペコードが占有していたメモリ使用量も 72 バイトから現在の 28 バイトに削減できます。
さらに、文字列の場合、リテラル テーブルには文字列の事前に計算されたハッシュ値も保存され、実行時の複数の計算が回避されます。
リテラル文字列
C 言語と同様に、コード内のリテラル文字列は、実行期間全体を通じて固定セグメント (データ セグメント) に保存され、これらの文字列は定数文字列であり、変更したり解放したりすることはできません。PHP もこの考え方を利用し、内部文字列の概念を提案しています。PHP コード内のリテラル文字列は一度割り当てられ、実行期間全体にわたって変更することはできません。
PHP が copy_zval や free zval などの操作を実行するとき、不必要な free や copy を避けるために内部文字列を特別に処理します。
このようにして、これらのリテラル文字列のハッシュ値が事前に計算され、ハッシュテーブルでの文字列比較 == とハッシュ計算に、この事前に計算されたハッシュ値が直接使用されるため、パフォーマンスが向上します。 🎜>
その他
もちろん、オペコードの最適化や不要なオペコードの削減など、最適化のポイントはたくさんありますので、ここでは詳しく説明しません
比較以下は、PHP 開発チームの内部テストから得られたデータの一部です:
php-trunk | パッチが適用されました | 改善 | |
---|---|---|---|
bench.php (秒) | 4.31 | 3.49 | 19% |
micro_bench.php (秒) | 19.78 | 14.63 | 26% |
いくつかの実際的なアプリケーション:
php-trunk | パス済み | 改善 | |
---|---|---|---|
ブログ (req/秒) | 59.3 | 66.2 | 12% |
drupal (要求/秒) | 1073.9 | 1084.8 | 1% |
FW (要求/秒) | 105.3 | 111.8 | 6% |
こんにちは (req/秒) | 5362.5 | 5351.4 | 0% |
qdig (要求/秒) | 243.4 | 253.7 | 4% |
typo3 (要求/秒) | 355.3 | 382.6 | 8% |
wordpress (要求/秒) | 101.8 | 108.5 | 7% |
xoops (要求/秒) | 70.3 | 78.5 | 12% |
スクラム (要求/秒) | 86.5 | 104.2 | 20% |
これらのデータから判断すると、パフォーマンスの向上は依然として明らかです..

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

メモ帳++7.3.1
使いやすく無料のコードエディター

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

WebStorm Mac版
便利なJavaScript開発ツール

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン
