BKJIA クイック翻訳】Google チームは先週、PHP パフォーマンスのヒントを含むウェブサイト高速化のヒントを共有しました。しかし、これらの PHP パフォーマンスに関するヒントは PHP コミュニティで大騒ぎを引き起こし、PHP チームはすぐにこれらのパフォーマンスに関するヒントに関する「バグを捕まえる」ための公開書簡を書きました。 Googleの提案については、BKJIAがここ数日で整理し、「 Accelerate, Accelerate, Accelerate Again: A Complete Collection of Website Acceleration Techniques from Google 」という記事を公開した。 4 ページの後半では、PHP 関連のパフォーマンス スキルについて説明します。この記事を読む前によく理解しておくことができます。
以下は PHP チームからの手紙の翻訳です:
PHP チーム: この記事で与えられたアドバイス はすべて 間違っています。
1. 理由もなく変数をコピーしないようにしてください
PHP 4 および 5 コアの Zend エンジンは、「コピーオンライト」と呼ばれるメモリ管理システムを使用します。つまり、ある変数の値を別の変数に何度代入しても、値を変更しない限り、データはコピーされません。例:
りースレッドセーフ機能とデバッグ機能を備えた PHP 5.3 の下:
前: 853968
後: 854236
スレッドセーフ機能とデバッグ機能のない PHP 5.2 では:
前: 581912
後: 581976
つまり、デバッグ モードでは 268 バイトの違いがあり、通常モードでは 64 バイトの違いがあります。これは、Google の記事に記載されている BKJIA 編集者の注記とは大きく異なります。Google の元の記事の説明では、変数をコピーすると「メモリ消費量が 2 倍になる」とあります)。
PHP コードでは、適切なフィルタリングを行わずにユーザーが提供した変数の元の内容をエコーしたり保存したりすることは厳しく禁止されていることに注意してください。
2. 長い文字列には一重引用符を使用します
PHP 5.2 と 5.3 のベンチマーク テストでは、二重引用符は補間を使用し、一重引用符はチェーン連結を使用しますが、この 2 つの速度はまったく同じであり、二重引用符でもより高速であることがわかります。変数を含まない通常の文字列を使用する場合、二重引用符を使用するとパフォーマンスが大幅に向上します。
3. print の代わりに echo を使用します
これら 2 つのメソッドの実行速度は、ホスト上での PHP の設定によって異なります。
4. エコーで連結チェーンを使用しないでください)
真実は全く逆です。新しいエンジンの複数のエコー処理方法により、エコー内で連結を使用する方が実際に高速になります。
5. if/else の代わりに switch/case を使用します
最後に、このアドバイスは完全にナンセンスです。 switch/case または if/else をどこで使用するかはコーディングの習慣に完全に依存し、特定の状況を除いて、それらはすべてほぼ同じ速度で実行されます。
実際、これらの提案のほとんどは古い PHP バージョン (PHP 3 および非常に古い PHP 4 バージョン) では正しいですが、新世代の PHP では間違いなく間違っています。