ホームページ >バックエンド開発 >PHPチュートリアル >PHP コードを最適化する 40 のヒント_PHP チュートリアル
1. メソッドが静的である可能性がある場合は、それを静的として宣言すると、速度が 1/4 向上します。
2. echo は戻り値がなく、print は整数を返すため、print より効率的です。3. ループ中ではなく、ループ前に最大ループ数を設定します。
4. 変数を破棄してメモリ、特に大きな配列を解放します。
5. __get、__set、__autoload などの魔法のメソッドの使用は避けてください。6.requiere_once() はより多くのリソースを消費します;
7. include と require で絶対パスを使用すると、パスの分析にかかる時間が短縮されます。
8. sexinsex からスクリプトの実行までの時間を取得する必要がある場合は、time(); よりも $_SERVER[REQUSET_TIME] の方が適しています。
9. 文字処理関数を使用できる場合は、正規表現よりも効率的であるため、使用してみてください。10.str_replace 文字置換は通常の置換 preg_replace より高速ですが、strtr は str_replace より 1/4 高速です;
11. 関数が文字置換などのパラメータとして配列と単純な文字の両方を受け入れることができ、パラメータ リストが長すぎない場合は、配列を受け入れる代わりに、より簡潔な置換ステートメントを使用して一度に 1 文字だけを置換することを検討できます。 . 検索と置換のパラメータ。大きなものを小さく、1+1>2;
12. @ でエラーをカバーすると、スクリプトの実行速度が遅くなります。
13.$row[id] は $row[id] より 7 倍高速です。配列キーに引用符を追加する習慣を身に付けることをお勧めします。14. エラーメッセージは便利です;
15. For($x=0; $x < count($array); $x) などの関数をループ内で使用しないでください。count() 関数が最初に外側で計算します。
16. メソッド内でローカル変数を作成するのが最も速く、97xxoo はメソッド内でローカル変数を呼び出すのとほぼ同じくらい高速です。
17. グローバル変数の作成はローカル変数よりも 2 倍遅くなります。
18. ($this->prop++) などのオブジェクト プロパティ (クラス内の変数) の作成は、ローカル変数よりも 3 倍遅くなります。
19. 宣言されていないローカル変数の作成は、初期化されたローカル変数よりも 9 ~ 10 倍遅くなります。
20. どの関数でも使用されていないグローバル変数を宣言すると、パフォーマンスも低下します (同じ数のローカル変数を宣言するのと同じです)。21. メソッドのパフォーマンスは、クラスに定義されているメソッドの数とは関係ありません。テスト対象のクラスに 10 個以上のメソッドを追加してもパフォーマンスに違いはありません (これらのメソッドはテスト メソッドの前後にあります)。 ;
22. サブクラスのメソッドのパフォーマンスは基本クラスのパフォーマンスよりも優れています;//bkJia中文网
23. パラメーターを 1 つだけ呼び出し、関数本体が空の関数の実行にかかる時間は、$localvar++ 操作 7 ~ 8 回に相当しますが、同様のメソッド (クラス内の関数) の実行時間は $localvar++ 操作約 15 回に相当します。 ;
24. 文字列を ” の代わりに ' で囲むと、php は変数を '...' 内ではなく "..." 内で検索するため、解釈が少し速くなります。 もちろん、これは変数が必要ない場合にのみ実行できます。文字列内。
25. 文字列を出力するときは、ドットの代わりにカンマを使用する方が高速です。注: これはエコーに対してのみ機能します。この関数はパラメーターとしていくつかの文字列を受け入れることができます。
26. Apache サーバーでは、対応する HTML 静的ページよりも php スクリプト ページの生成に少なくとも 2 ~ 10 倍の時間がかかります。より多くの静的 HTML ページといくつかの手順を使用することをお勧めします。
27. キャッシュがインストールされていない限り、PHP スクリプトはアクセスされるたびに再コンパイルする必要があります。 php キャッシュ プログラムをインストールすることをお勧めします。これにより、繰り返しのコンパイルが削除され、パフォーマンスが 20 ~ 100% 大幅に向上します。
28. 動的ネットワーク アプリケーションのパフォーマンスを向上させ、データベースの負担を軽減するには、高性能の分散メモリ オブジェクト キャッシュ システムである memcached を使用することをお勧めします。
29. ip2long() 関数とlong2ip() 関数を使用して、IP アドレスを文字型ではなく整数型に変換し、データベースに保存します。これにより、保管スペースが約 1/4 に削減されます。同時に、住所を簡単に並べ替えて素早く検索することができます。30. checkdnsrr() を使用して、ドメイン名の存在を通じて一部の電子メール アドレスの有効性を確認します。この組み込み関数により、各ドメイン名が IP アドレスに対応していることが確認されます。
31. php5 および mysql4.1 以降を使用している場合は、mysql_* の改良された関数 mysqli_* の使用を検討してください。
32. 三項演算子 (?:);を使用してみます。
33. プロジェクトを完全にやり直すことを考える前に、PEAR に必要なものがあるかどうかを確認してください。多くの PHP 開発者が知っているように、PEAR は巨大なリソース ライブラリです。34. 適切にフォーマットされたページのソースコードのコピーを自動的に印刷するには、highlight_file() を使用します。 //2cto.com
35. error_reporting(0) 関数を使用して、潜在的に機密情報がユーザーに表示されないようにします。理想的には、php.ini ファイルでエラー報告を完全に無効にする必要があります。ただし、共有仮想ホストを使用していて php.ini を変更できない場合は、error_reporting(0) 関数を追加して各スクリプト ファイルの最初の行に配置することをお勧めします (または、require_once() を使用してそれをロードします)。これにより、エラー発生時に機密 SQL クエリとパスが表示されないように効果的に保護できます。
36. データベースの保存(取得)時に大容量の文字列を圧縮(解凍)するには gzcompress() と gzuncompress() を使用します。この組み込み関数は、gzip アルゴリズムを使用して最大 90% 圧縮できます。
37. パラメータ変数のアドレスを参照して関数に複数の戻り値を持たせる。変数の前に「&」を追加して、値ではなくアドレスで渡すことを示すことができます。
38.「魔法の引用符」と SQL インジェクションの危険性を十分に理解する。これを読んでいる開発者のほとんどがすでに SQL インジェクションに精通していることを願っています。ただし、理解することが絶対に重要であるため、ここに記載します。この用語をこれまで聞いたことがない場合は、残りの 1 日をグーグル検索や読書に費やしてください。//2cto.com
39. 小文字やハッシュテーブルなどの他の操作を使用する必要があるため、strlen() を使用すると速度があまり良くなくなり、isset() を使用して同様の機能を実現できます。isset() の速度は strlen();40.変数 $i++ の値をインクリメントまたはデクリメントするとき、++$i よりも少し遅くなります。 //2cto.com これは PHP に特有のものであり、他の言語には当てはまりません。そのため、C または Java のコードを、突然速くなると思って変更しないでください。実際はそうではありません。 $i++ で使用される 4 つのオペコードの代わりに必要なのは 3 つだけなので、PHP では ++$i の方が高速です。ポストインクリメントでは、実際には一時的な変数が作成され、その後インクリメントされます。一方、事前インクリメントでは元の値が直接増加します。これは、Zend の PHP オプティマイザーと同様に、オペコードが最適化される最適化の 1 つです。すべてのオペコード オプティマイザーがこの最適化を実行するわけではなく、オペコード オプティマイザーなしで実行されている ISP やサーバーがたくさんあるため、これを念頭に置くことをお勧めします。