ホームページ  >  記事  >  バックエンド開発  >  PHPウェブサイト開発の実践ヒント集_PHPチュートリアル

PHPウェブサイト開発の実践ヒント集_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-21 14:52:19775ブラウズ

文字列を囲むには二重引用符の代わりに一重引用符を使用すると、処理が速くなります。 PHP は二重引用符で囲まれた文字列内の変数を検索しますが、一重引用符は検索しません。 注: これを実行できるのは echo だけです。これは複数の文字列をパラメータとして受け取ることができる「関数」です (注釈: PHP マニュアル echo は実際の関数ではなく言語構造であるため、関数は二重引用符で囲まれています)。

1. クラスメソッドを静的に定義できる場合は、それを静的に定義してみると、速度が 4 倍近く向上します。

2. $row[’id’] の速度は $row[id] の 7 倍です。

3. Echo は print より高速で、echo $str1、$str2 などの文字列連結の代わりに echo の複数のパラメーター (注釈: ピリオドの代わりにカンマを使用することを指します) を使用します。

4. for ループを実行する前に最大ループ数を決定します。ループごとに最大値を計算するのではなく、代わりに foreach を使用することをお勧めします。

5. 未使用の変数、特に大きな配列の登録を解除して、メモリを解放します。

6. __get、__set、__autoload の使用は避けてください。

7. require_once() は高価です。

8. ファイルをインクルードする場合は、絶対パスを使用するようにしてください。これにより、include_path 内のファイルを検索する PHP の速度が低下し、オペレーティング システムのパスの解析に必要な時間が短縮されます。

9. スクリプトの実行開始時刻 (注釈: サーバーがクライアント要求を受信する) を知りたい場合は、time() よりも $_SERVER[‘REQUEST_TIME’] を使用する方が良いでしょう。

10. 関数は正規表現を置き換えて同じ関数を完成させます。

11. str_replace 関数は preg_replace 関数よりも高速ですが、strtr 関数は str_replace 関数よりも 4 倍効率的です。

12. 文字列置換関数がパラメーターとして配列または文字を受け入れ、パラメーターの長さが長すぎない場合は、単に 1 行のコードを記述するのではなく、渡される各パラメーターが文字になるように追加の置換コードを記述することを検討できます。配列をクエリおよび置換のパラメータとして受け入れます。

13. 複数の if、else if ステートメントを使用するよりも、選択的分岐ステートメント (翻訳アノテーション: switch case) を使用する方が適切です。

14. @ を使用してエラー メッセージをブロックするのは非常に非効率的です。

15. Apache の mod_deflate モジュールをオンにして、Web ページの閲覧速度を向上させます。

16. データベース接続は、使用が終了したら閉じる必要があります。長い接続は使用しないでください。

17. エラーメッセージは高価です。

18. メソッド内でローカル変数をインクリメントするのが最も高速です。関数内でローカル変数を呼び出すのとほぼ同じ速度です。

19. グローバル変数のインクリメントは、ローカル変数のインクリメントより 2 倍遅くなります。

20. オブジェクト プロパティ ($this->prop++ など) のインクリメントは、ローカル変数のインクリメントより 3 倍遅くなります。

21. 未定義のローカル変数をインクリメントするのは、事前定義されたローカル変数をインクリメントするよりも 9 ~ 10 倍遅くなります。

22. 関数内で呼び出さずにローカル変数を定義するだけでも、(ローカル変数をインクリメントするのと同じ程度に) 速度が低下します。 PHP はおそらく、グローバル変数が存在するかどうかを確認します。

文字列を囲むには二重引用符の代わりに一重引用符を使用すると、処理が速くなります。 PHP は二重引用符で囲まれた文字列内の変数を検索しますが、一重引用符は検索しません。 注: これを実行できるのは echo だけです。これは複数の文字列をパラメータとして受け取ることができる「関数」です (注釈: PHP マニュアル echo は実際の関数ではなく言語構造であるため、関数は二重引用符で囲まれています)。

1. クラスメソッドを静的に定義できる場合は、それを静的に定義してみると、速度が 4 倍近く向上します。

2. $row[’id’] の速度は $row[id] の 7 倍です。

3. Echo は print より高速で、echo $str1、$str2 などの文字列連結の代わりに echo の複数のパラメーター (注釈: ピリオドの代わりにカンマを使用することを指します) を使用します。

4. for ループを実行する前に最大ループ数を決定します。ループごとに最大値を計算するのではなく、代わりに foreach を使用することをお勧めします。

5. 未使用の変数、特に大きな配列の登録を解除して、メモリを解放します。

6. __get、__set、__autoload の使用は避けてください。

7. require_once() は高価です。

8. ファイルをインクルードする場合は、絶対パスを使用するようにしてください。これにより、include_path 内のファイルを検索する PHP の速度が低下し、オペレーティング システムのパスの解析に必要な時間が短縮されます。

9. スクリプトの実行開始時刻 (注釈: サーバーがクライアント要求を受信する) を知りたい場合は、time() よりも $_SERVER[‘REQUEST_TIME’] を使用する方が良いでしょう。

10. 関数は正規表現を置き換えて同じ関数を完成させます。

11. str_replace 関数は preg_replace 関数よりも高速ですが、strtr 関数は str_replace 関数よりも 4 倍効率的です。

12. 文字列置換関数がパラメーターとして配列または文字を受け入れ、パラメーターの長さが長すぎない場合は、単に 1 行のコードを記述するのではなく、渡される各パラメーターが文字になるように追加の置換コードを記述することを検討できます。配列をクエリおよび置換のパラメータとして受け入れます。

13. 複数の if、else if ステートメントを使用するよりも、選択的分岐ステートメント (翻訳アノテーション: switch case) を使用する方が適切です。

14. @ を使用してエラー メッセージをブロックするのは非常に非効率的です。

15. Apache の mod_deflate モジュールをオンにして、Web ページの閲覧速度を向上させます。

16. データベース接続は、使用が終了したら閉じる必要があります。長い接続は使用しないでください。

17. エラーメッセージは高価です。

18. メソッド内でローカル変数をインクリメントするのが最も高速です。関数内でローカル変数を呼び出すのとほぼ同じ速度です。

19. グローバル変数のインクリメントは、ローカル変数のインクリメントより 2 倍遅くなります。

20. オブジェクト プロパティ ($this->prop++ など) のインクリメントは、ローカル変数のインクリメントより 3 倍遅くなります。

21. 未定義のローカル変数をインクリメントするのは、事前定義されたローカル変数をインクリメントするよりも 9 ~ 10 倍遅くなります。

22. 関数内で呼び出さずにローカル変数を定義するだけでも、(ローカル変数をインクリメントするのと同じ程度に) 速度が低下します。 PHP はおそらく、グローバル変数が存在するかどうかを確認します。

if (strlen($foo)

(以下のヒントと比較してください)

if (!isset($foo{5})) { echo 「Foo は短すぎます」$$ }

isset() の呼び出しは strlen() よりも高速です。これは、後者とは異なり、isset() は言語構造として、その実行に関数の検索と小文字が必要ないことを意味するためです。つまり、実際には、最上位コードで文字列の長さをチェックするオーバーヘッドはそれほどかかりません。

34. 変数 $i のインクリメントまたはデクリメントを実行する場合、$i++ は ++$i より遅くなります。この違いは PHP に固有のものであり、他の言語には当てはまりません。そのため、C または Java コードを変更して、すぐに高速になることを期待しないでください。実際には機能しません。 ++$i は 3 つの命令 (オペコード) しか必要としないため高速ですが、$i++ は 4 つの命令を必要とします。ポストインクリメントでは、実際には、後でインクリメントされる一時変数が作成されます。プレフィックスの増分は、元の値に直接増加します。これは、Zend の PHP オプティマイザーによって行われるような、最適化の一種です。すべてのコマンド オプティマイザーが同じ最適化を行うわけではなく、コマンド オプティマイザーを備えていないインターネット サービス プロバイダー (ISP) やサーバーが多数存在するため、この最適化を念頭に置くことをお勧めします。

35. すべてがオブジェクト指向 (OOP) である必要はありません。オブジェクト指向は多くの場合非常に高価であり、各メソッドとオブジェクトの呼び出しは大量のメモリを消費します。

36. すべてのデータ構造を実装するためにクラスを使用する必要はありません。配列も非常に便利です。

37. 本当に再利用するコードを慎重に考えてください。

38. 必要に応じていつでもコードをメソッドに分割できます。

39. 多数の PHP 組み込み関数を使用してみます。

40. コード内に時間のかかる関数が多数ある場合は、C 拡張機能を使用して実装することを検討できます。
41. コードのプロファイリングを行います。チェッカーは、コードのどの部分にどれくらいの時間がかかっているかを示します。 Xdebug デバッガーには、コードの全体的な整合性を評価し、コード内のボトルネックを明らかにする検査ルーチンが含まれています。
42. mod_zip を Apache モジュールとして使用すると、データを瞬時に圧縮し、データ転送量を 80% 削減できます。

43. file、fopen、feof、fgets などの一連のメソッドの代わりに file_get_contents を使用できる場合は、より効率的な file_get_contents を使用してください。ただし、URL ファイルを開くときは、file_get_contents の PHP バージョンの問題に注意してください。

44. PHP のファイル操作効率は低くありませんが、ファイル操作をできるだけ少なくします。

45. Select SQL ステートメントを最適化し、実行する挿入操作と更新操作をできるだけ少なくします (更新について批判されました)。

46. 可能な限り PHP 内部関数を使用します (ただし、PHP に存在しない関数を見つけるために、経験の問題でカスタム関数を作成できたはずの時間を無駄にしました)。

47. ループ内で変数、特に大きな変数、オブジェクトを宣言しないでください (これは PHP だけの問題ではないようですよね?)。

48. 多次元配列で代入をループしたり入れ子にしたりしないようにしてください。

49. PHP の内部文字列操作関数を使用できる場合は、正規表現を使用しないでください。

50. foreach はより効率的です。while および for ループの代わりに foreach を使用してください。

51. 文字列を引用するには二重引用符の代わりに一重引用符を使用します。

52. 「i=i+1 の代わりに i+=1 を使用します。これは C/C++ の習慣に従っており、より効率的です。」

53. グローバル変数は使用後に unset() する必要があります。

http://www.bkjia.com/PHPjc/371615.html

www.bkjia.com

tru​​e

http://www.bkjia.com/PHPjc/371615.html

技術記事

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。