ホームページ >バックエンド開発 >PHPチュートリアル >PHPコード最適化集_PHPチュートリアル
1. メソッドが静的である可能性がある場合は、それを静的として宣言すると、速度が 1/4 向上します。
2. echo は値を返さず、print は整数を返すため、print よりも効率的です。
3. ループの最大数をループ中ではなくループ前に設定します。4. 変数を破棄してメモリ、特に大きな配列を解放します。
5. __get、__set、__autoload などのマジック メソッドの使用は避けてください。
6.requiere_once() はより多くのリソースを消費します;
7. include と require で絶対パスを使用する
8. スクリプトの実行時刻を取得する必要がある場合は、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. メソッド内でローカル変数を作成するのが最も速く、メソッド内でローカル変数を呼び出すのとほぼ同じくらい高速です。
Admin.Comの
17. グローバル変数の作成はローカル変数よりも 2 倍遅くなります;
18. ($this->prop++) などのオブジェクト プロパティ (クラス内の変数) の作成は、ローカル変数よりも 3 倍遅くなります。
19. 宣言されていないローカル変数の作成は、初期化されたローカル変数よりも 9 ~ 10 倍遅くなります。
20. どの関数でも使用されていないグローバル変数を宣言すると、パフォーマンスも低下します (同じ数のローカル変数を宣言するのと同じ)。PHP はグローバル変数が存在するかどうかを確認する場合があります。
21. メソッドのパフォーマンスは、クラスに定義されているメソッドの数とは関係ありません。テスト対象のクラスに 10 個以上のメソッドを追加してもパフォーマンスに違いはないからです (これらのメソッドはテスト メソッドの前後にあります) );
22. サブクラスのメソッドのパフォーマンスは、基本クラスのメソッドよりも優れています。
23. パラメーターを 1 つだけ呼び出し、関数本体が空の関数の実行にかかる時間は、$localvar++ 操作の 7 ~ 8 回分に相当しますが、同様のメソッド (クラス内の関数) の実行時間は、$localvar++ 操作約 15 回分に相当します。 ;
24.文字列を ” の代わりに ' で囲むと、php は変数を「…」内ではなく「…」内で探すため、解釈が少し速くなります。 もちろん、変数が必要ない場合にのみこれを行うことができます。文字列内。
25. 文字列を出力するときは、ドットの代わりにカンマを使用した方が速いです。注: これはエコーに対してのみ機能します。この関数はパラメーターとしていくつかの文字列を受け入れることができます。
Admin.Comの
26. Apache サーバーでは、2nxx の PHP スクリプト ページの生成には、対応する HTML 静的ページよりも少なくとも 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 に必要なものがあるかどうかを確認してください。 PEAR は巨大なリソース ライブラリであり、多くの PHP 開発者がそれを知っています。34. 適切にフォーマットされたページのソース コードのコピーを自動的に印刷するには、highlight_file() を使用します。
35. error_reporting(0) 関数を使用して、潜在的に機密情報がユーザーに表示されないようにします。理想的には、php.ini ファイルでエラー報告を完全に無効にする必要があります。ただし、共有仮想ホストを使用していて php.ini を変更できない場合は、error_reporting(0) 関数を追加して各スクリプト ファイルの最初の行に配置することをお勧めします (または、require_once() を使用してそれをロードします)。これにより、エラー発生時に機密 SQL クエリとパスが表示されないように効果的に保護できます。
36. データベースの保存(取得)時に大容量の文字列を圧縮(解凍)するには、gzcompress()とgzuncompress()を使用します。この組み込み関数は、gzip アルゴリズムを使用して最大 90% 圧縮できます。
37. パラメータ変数のアドレスを参照することで関数に複数の戻り値を持たせる。変数の前に「&」を追加して、値ではなくアドレスで渡すことを示すことができます。
38.「マジッククオート」とSQLインジェクションの危険性を十分に理解する これを読んでいるほとんどの開発者はすでにSQLインジェクションに精通していると思いますが、これを理解したことがない場合は絶対に重要であるため、ここに記載します。この言葉を聞いたことがあるなら、残りの日はずっとグーグルで読んで過ごしてください。
39. strlen() を使用すると、小文字やハッシュ テーブル クエリなどの他の操作を呼び出す必要があるため、あまり高速ではありません。isset() を使用すると、strlen();
より高速になります。40.変数 $i++ の値をインクリメントまたはデクリメントすると、たまたま ++$i よりも少し遅くなります。これは PHP 固有のものであり、他の言語には当てはまらないため、C または Java コードを変更しないでください。突然速くなると思ったら、実際はそうではありません。 $i++ に使用される 4 つのオペコードの代わりに必要なのは 3 つだけであるため、PHP ではたまたま速くなります。事前インクリメントは元の値を直接増加させますが、これは Zend の PHP オプティマイザーと同様にオペコードが最適化する最適化の 1 つであり、すべてのオペコード オプティマイザーがこの最適化を実行するわけではなく、多数あるため注意してください。オペコード オプティマイザーなしで実行されている ISP とサーバーの数。