1、代わりにこれを行うには、文字列を格納するための単一引用符が速くなります。PHPは、二重引用符の内部変数を探しているため、単一引用符は、注意を払っています:PHPマニュアル:引数のみ「機能」(翻訳などのいくつかの文字列を取ることができますしている、エコーで動作します彼は、エコーが言語構造ではなく、本当の機能なので、機能に加えて、二重引用符)であると述べました。
この方法は、可能な限り静的として定義され、静的クラスとして定義することができた場合2、それはほぼ4倍の速度が向上しますです。
。3、R&LT O W [ ' IはD ' ] である速度の[ID] 7回行。
このようなエコーとして代わりに文字列を連結する(注釈は、期間の代わりにカンマを指す):4、高速エコーより印刷、および複数のエコーパラメータを使用S T R&LT 1 、STR2。
図5に示すように、前ループサイクルの最大数の実行を決定しないループ内ではなく、最大、最高の使用のforeachを計算します。
6、メモリを解放するためにあなたの変数、特に大きな配列のキャンセル。
7、セット、__ __自動読み込み、__getを使用しないようにしてみてください。
8、require_onceを()は高価です。
9、ファイルが含まれている場合、それは、高速でより少ないOSパスを解決するために必要な時間は、ファイルを見つけるために、PHPのinclude_pathのを避けるために、絶対パスを使用するようにしてください。
時間を(つまり、注釈サーバクライアント要求が受信される)の使用を:あなたは、スクリプトを知りたい場合10は、実行を開始しました
代わりに、正規表現関数11は、同じ機能を実行します。
12はstr_replaceがにpreg_replaceよりも高速で、ですが、4回str_replace関数がstrtrです。
図13は、文字列置換機能場合、引数として配列と文字の両方を受け入れ、パラメータが長すぎないが、その代わりにアレイを受け付ける1行のコードで、そのため、各通過一文字、置換コード追記と考えることができますパラメータとして検索と置換。
14、SELECT文(翻訳:スイッチケース)を使用すると、if文他に、もし複数を使用するよりも優れています。
15、@のアプローチと、エラーメッセージをミュートすることは、非常に非効率的な非常に非効率的です。
16、Webブラウジング速度を向上させることができApacheモジュールmod_deflateを開きます。
データベース接続がオフに終了すると17は、長い接続を使用しない、使用すべきです。
18.エラーメッセージは高価です。
メソッド内のローカル変数をインクリメント19.最速です。関数内のローカル変数を呼び出すとほぼ同じ。
20、二回のローカル変数よりも遅くグローバル変数をインクリメントします。
2 。1 、送達によって番目の対オブジェクト属の特性(例えば:this->プロパ++)ローカル変数三回よりも遅いです。
事前定義されたローカル変数は、9~10倍遅いよりもローカル変数をインクリメント22は、増分を事前に定義されていません。
23.ジャストも(ローカル変数をインクリメントするのと同じ量)を、物事を遅くする機能でそれを使用せずにグローバル変数を宣言します。PHPは、おそらく世界が存在するかどうかのチェックを行います。
図24は、メソッド呼び出しは、私は(前及び試験方法の後)10の以上の方法を追加したので、このクラスで定義されたメソッドの数とは無関係であるように見えるが、性能に変化なし
25、ベースクラスで定義されたと同様に速く実行する派生クラスのメソッド。
26、パラメータでヌル機能を呼び出すと、それは7-8回localvar操作を実行するのに要する時間に相当します。同様のメソッド呼び出し時間が近い15 localvar操作に費やしました。
静的なHTMLページよりも27、アパッチA PHPスクリプト2-10倍遅いです。より多くの静的なHTMLページと少ないスクリプトを使用してみてください。
28は、スクリプトがない限りキャッシュすることができ、あるいは一度呼び出しごとに再コンパイルされます。PHPのキャッシュメカニズムは、通常、コンパイル時間を除去することにより、25から100パーセントのパフォーマンスをアップグレードすることができますインストールします。
29、あなたがmemcachedのを使用することができ、キャッシュをしよう。memcachedのは、データベースの負荷を軽減することにより、動的なWebアプリケーションを高速化することを意図するもので高性能メモリオブジェクトキャッシュシステムです。スクリプトは、リクエストごとに再コンパイルする必要がないように、オペレーションコード(OPコード)のキャッシュが有効です。
30、操作文字列とその長さをテストする必要が一定の要件を満たしたとき、あなたはのstrlen()関数を使用することを前提としています。それはどんな計算を行いませんので、この機能は、非常に高速である、唯一の(C内蔵PHPの変数を格納するために使用されるデータ構造)文字列の長さはzvalの構造で知られて返されます。STRLEN()関数であるため、関数呼び出しは、小文字などのいくつかのステップを、必要とするためしかし、それはまだ多少遅いです、ハッシュ・ルックアップ(注釈機能の小文字の名前を指し、PHPの関数名は大文字と小文字を区別しません)機能に従います一緒に実行するために呼び出されます。いくつかのケースでは、あなたのコードの実行を加速するISSET()技術を使用することができます。(以下の実施例)
if (strlen($foo) < 5) {
echo “Foo is too short”;
}
(与下面的技巧做比较)
if (!isset($foo{5})) {
echo “Foo is too short”;
}
後者とは異なり、ISSET(ですのでISSET()が起こる()を呼び出すと)、strlen関数よりも高速である機能の検索と小文字の技術を必要としない、それは実行だことを意味し、言語構造です。あなたはあまりにも多くのオーバーヘッドをかけていない文字列の長さを決定するという、実際には、トップレベルのコード。
変数を実行するとき31、私はある左利きの増加や配達の保存時間は、私が++ ++よりも、私は遅く、数。この一種の違い異なるがされたP H Pは特別な存在している、としませ市龍はにその彼の言語の言葉、というためには喜ばないし、修復の変化を、あなたは、C またはJのA V の生成コードとを指し希望その彼らができますLiはすなわちなり、高速、無使用の。+ それだけで$私はあなたが4命令が必要になります++、3つの命令(オペコード)が必要ですので、+私は高速です。ポストインクリメントが実際にこの一時的な変数がインクリメントされ、一時変数を生成します。プリインクリメントは、直接元の値を増加させます。ZendのPHPオプティマイザがなさようにこれは、最適化プロセスの一つです。すべてのオペコード・オプティマイザは、同じ最適化をしないので、この最適化は、良いアイデアだろうことを覚えておいてください、そしてインターネットサービスプロバイダ(ISP)は、多くのサーバーとは、オペコードオプティマイザなしがあります。
32は、必ずしもありません(OOP)を標的指向、オブジェクト指向、多くの場合、多くのオーバーヘッドは、各メソッドとオブジェクトの呼び出しは、多くのメモリを消費します。
33は、データ構造のすべてを実装しないでください、配列が便利です。
34.はあまり分割しない方法を実行してください、私はあなたが本当にどのコードを再だろうと思いますか?
35、あなたは、あなたが常にメソッドのコードを分割することができますする必要がある場合。
36、組み込み関数のPHPのできるだけ多数。
関数は、コードに非常に時間がかかる場合は37、あなたはCの拡張としてそれらを考慮することができます。
38、評価試験(プロファイル)あなたのコード。チェッカーは、多くの時間を消費し、コードのどの部分を教えてくれます。Xdebugのデバッガは、全体的なテストに表示させることができるボトルネックを評価するためのテスト手順を含みます。
39、Apacheモジュールとして使用可能mod_zipは、データを圧縮し、80%減少し、データ伝送量を可能にします。
40、のfile_get_contentsを使用して代替ファイル、関数fopen、feofを、fgetsの、および他の方法の場合には、のfile_get_contentsを使用しようと、彼ははるかに効率的だからですが、URLのファイルの時間を開くには、問題の慎重なのfile_get_contentsのPHPのバージョンである!;
41、PHPファイル操作効率が低いではないが、最小及びファイル操作です。
挿入、更新操作を最小限に抑えることができる場合は42、最適化を選択したSQL文、(更新時に、私があまりにも悪いバッチでした)。
PHP内部関数の使用を可能な限り43、(私は存在しない、PHPの関数を見つける必要があり、この廃棄物は、経験の問題ああ、時間のカスタム関数を書くことができます!)。
44、内側のループは、特に大規模な変数を変数を宣言しない:オブジェクトを、(それの内側PHPの問題に注意を払うようには見えません?)
45、多次元配列は、ネストされたループの割り当てないようにしよう。
46、PHPの文字列操作関数内の可能性の場合には、正規表現を使用しないでください。
47、可能な限りforeachのより効率的な、および使用foreachループのための場所にある間。
48、代わりに二重引用符単一引用符文字列。
49、 "I + = 1の代わりに私を使用する= I + 1は、C / C ++の食事、だけでなく、高効率を遵守します"
グローバル変数の50は、)オフ(未設定に費やされるべきです。