この記事は、書籍「PHP で知っておくべき 300 の質問」から転載したものです。後で簡単に参照できるように、ここに記録されています。
(1) 文字列を含めるには二重引用符の代わりに一重引用符を使用すると高速になります。 php は二重引用符で囲まれた文字列内の変数を検索しますが、一重引用符は検索しないためです。注: これを実行できるのは echo だけです。これは複数の文字列をパラメータとして受け取ることができる「関数」です (echo は言語構造であり、実際の関数ではありません)。(2) $row['id'] は $row[id] よりもはるかに高速です。
(3) Echo は print より高速で、echo $str1,$str2 のように文字列連結の代わりに echo の複数のパラメータが使用されます
(4) foreach の方が効率的です。while ループや for ループの代わりに foreach を使用してみてください。
(5) for ループを実行する前に最大ループ数を決定します。ループごとに最大値を計算するのではなく、代わりに foreach を使用するのが最善です。
(6) メモリを解放するために、未使用の変数、特に大きな配列の登録を解除します。
(7) _get, _set, _autoload は使わないようにしましょう。
(8) include() を使用してファイルをインクルードする場合は、絶対パスを使用するようにしてください。これにより、PHP が include_path 内のファイルを見つける時間が節約され、オペレーティング システムのパスを解析する時間が短縮されます。
(9) スクリプトの実行開始時刻(つまり、サーバーがクライアントリクエストを受信する時刻)を取得したい場合は、time()よりも$_SERVER['REQUEST_TIME']を使用する方が良いです。
(10) プロジェクトに関数を実装するために PHP 組み込み関数を使用しようとし、同僚は同じ関数を完成させるために正規表現の代わりに関数を使用しようとします。
(11) str_replace 関数は preg_replace 関数よりも高速ですが、strtr 関数は str_replace 関数よりも効率的です。
(12) if、else if文を複数使うより、選択分岐文(switch)を使う方が良い。
(13) @を使用してエラーメッセージをブロックするのは効率が非常に低いため推奨されません。
(14) Apache の mod_deflate モジュールをオンにして、Web ブラウジング速度を向上させます。
(15) データベースに接続するときは、短い接続を使用し、使用されたデータベース接続を適時に閉じるようにしてください。
(16) メソッド内でローカル変数をインクリメントするのが最も速いです。関数内でローカル変数を呼び出すのとほぼ同じ速度です。
(17) 派生クラスのメソッドは、基本クラスで定義された同じメソッドよりも高速に実行されます。クラス メソッドを静的として定義できる場合は、それを静的に定義するようにすると、速度が大幅に向上します。
(18) PHP のファイル操作は非効率ではありませんが、実行するファイル操作はできるだけ少なくしてください。
(19) Apache が php スクリプトを解析する時間は、静的な HTML ページを解析するよりもはるかに遅くなります。使用する静的な HTML ページを増やし、PHP スクリプトを減らすようにしてください。
(20) スクリプトをキャッシュできなければ、呼び出されるたびに再コンパイルされます。 PHP キャッシュ メカニズムを導入すると、コンパイルのオーバーヘッドを回避するために、通常、パフォーマンスが 25% ~ 100% 向上します。
(21) 文字列を操作し、その長さが特定の要件を満たしているかどうかを確認する必要がある場合、最初のアイデアは strlen() 関数を使用することです。この関数は計算を行わず、zval 構造体 (PHP 変数の格納に使用される C の組み込み関数構造体) に格納されている既知の文字列長を返すだけなので、実行が速くなります。ただし、strlen() は関数であるため、関数呼び出しには多くのステップが必要となり、処理が多少遅くなります。場合によっては、 isset() を使用してコードの実行を高速化できます。例:
if(strlen($foo) if(!isset($foo{5})){ echo "Foo は短すぎます" $$}
?>
isset() の呼び出しは、strlen() よりも高速です。これは、strlen() とは異なり、言語構造としての isset() は、その実行に関数の検索と小文字の文字が必要ないことを意味するためです。つまり、実際には、文字列の長さのチェックにトップレベルのコードで費やされるオーバーヘッドはそれほど多くありません。
(22) 変数$iのインクリメントやデクリメントを実行すると、$i++は++$iよりも遅くなります(php言語のみ)
(23) すべてがオブジェクト指向である必要はない (OOP) オブジェクト指向は多くの場合非常に高価であり、各メソッドとオブジェクトの呼び出しは大量のメモリを消費します。
(24) file、fopen、feof、fgets などの一連のメソッドの代わりに file_get_contents を使用できる場合は、より効率的である file_get_contents を使用してみてください。ただし、URL ファイルを開くときは、file_get_contents の PHP バージョンの問題に注意してください。
効率を上げる方法はまだ検証していません O(∩_∩)O はぁ!