ホームページ  >  記事  >  バックエンド開発  >  PHP最適化スキル

PHP最適化スキル

墨辰丷
墨辰丷オリジナル
2018-06-07 10:44:101819ブラウズ

この記事では主に PHP の最適化スキルを紹介します。興味のある方はぜひ参考にしてください。

プログラマーがプログラムを作成するときは、プログラムの使用リソースを最小限に抑え、より高速に実行し、コードを少なくしたいと常に考えています。これらを追求している間に、私たちは多くのものを失うことがよくあります。最適化の目的は、最速の実行速度と最も簡単なコードの保守と引き換えに、最小限のコストを費やすことです。以下は、いくつかの PHP 最適化の概要です:
1. in_array の使用法
大きな配列に対して in_array() を使用することは避け、ループ内に 20 を超える要素を含む配列に対してこの関数を使用することは避けてください。 in_array() はリソースを非常に消費する可能性があります。小さな配列の場合、影響は最小限に抑えられますが、ループ内の大きな配列のチェックには数秒かかる場合があります。この機能が本当に必要な場合は、 isset() を使用して配列要素を検索します。実際、キー名はキー値のクエリに使用されます。 isset($array[$var]) の呼び出しは、in_array($var, array_keys($array)) よりもはるかに高速です。

2. 配列キー名
PHP では、一重引用符のない文字列を配列キー名として使用することはできますが、これは望ましくありません。問題を避けるために、キー名は常に一重引用符で囲む必要があります。混乱した。これはキー名として変数ではなく文字列を使用していることに注意してください。

例:

// 不好的写法
$foo = $assoc_array[blah];
// 好的写法
$foo = $assoc_array['blah'];
// 不好的写法
$foo = $assoc_array["$var"];
// 好的写法
$foo = $assoc_array[$var];

3. 文字列式 PHP で文字列を表現するには、一重引用符と二重引用符の 2 つの方法があります。主な違いは、構文インタープリターは二重引用符で表された文字列に対して変数置換を実行しますが、一重引用符で表された文字列は処理しないことです。したがって、実際に文字列内の変数を処理する必要がない限り、常に一重引用符を使用する必要があります。このようにして、構文インタープリターは変数をまったく含まない大量の文字列を毎回処理する必要がないため、プログラムの実行コストを削減できます。
同様に、関数呼び出しの引数として文字列変数を使用する場合、変数を引用符で囲む必要はありません。これにより、文法インタープリタが必要以上に多くの作業を実行することになります。二重引用符内のほとんどすべてのエスケープ文字は一重引用符には影響しないことに注意してください。上記のルールに注意する必要がありますが、コードを読みやすくするために例外を設けることが適切な場合もあります。

例:

// 不好的写法
$str = "This is a really long string with no variables for the parser to find.";
do_stuff("$str");
// 好的写法
$str = 'This is a really long string with no variables for the parser to find.';
do_stuff($str);
// 有时候单引号不是那么合适
$post_url = $phpbb_root_path . 'posting.' . $phpEx . '?mode=' . $mode . '&start=' . $start;
// 双引号有时候能让代码行更集中
$post_url = "{$phpbb_root_path}posting.$phpEx?mode=$mode&start=$start";

4. ループ定義内の演算 比較部分に演算がある場合は必ず最適化してください。この部分はループ内のすべてのステップで動作するため:

// 在每次循环中sizeof函数都要被调用
 for ($i = 0; $i < sizeof($post_data); $i++)
 {
  do_something();
 }
// 您可以在循环起始部分对这个不变的量赋值
 for ($i = 0, $size = sizeof($post_data); $i < $size; $i++)
 {
  do_something();
 }

5. 分岐判断、switchcase は ifelse よりも優れています 分岐ステートメントを使用することは、多くの ifelse を使用するよりもはるかに優れています。

6. @ 演算子を乱用しないでください
@ 演算子を乱用しない 非常に簡単なことのように見えますが、実際には、@ を使用すると、@ を使用しない場合よりも効率が数倍低くなります。
特に @ をループ内で使用しないでください。

7. 時刻を取得する方法
現在時刻を取得するために time() を使用することがよくありますが、結局のところ time() は関数です $_SERVER['REQUEST_TIME'] を直接使用する方が良いです。 。

8. 文字列の長さの判定
2 つの書き方:
(1) if(strlen($str) (2) if(isset($str) [5])){ /* do something */ }

概要: 上記がこの記事の全内容です。皆さんの学習に役立つことを願っています。

関連する推奨事項:

PHP で 2 次元配列の行列転置演算を実装する方法と事例

PHP で複数の画像を 1 つに結合する方法と事例

WeChat の PHP 開発の事例返金機能

以上がPHP最適化スキルの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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