ホームページ > バックエンド開発 > PHPチュートリアル > PHP の基礎となるコードの最適化とパフォーマンス向上の実践

PHP の基礎となるコードの最適化とパフォーマンス向上の実践

WBOY
リリース: 2023-11-08 17:38:01
オリジナル
1499 人が閲覧しました

PHP の基礎となるコードの最適化とパフォーマンス向上の実践

PHP は、Web 開発の分野で広く使用されているオープン ソースのサーバー スクリプト言語です。シンプルで習得が簡単で強力で、多くのオープン ソース データベースと完全に一致します。など、Webアプリケーションに適した開発が可能です。ただし、開発プロセス中は、PHP のパフォーマンスの問題を考慮する必要があることがよくあります。この記事では、PHP の実践的なパフォーマンスの最適化と改善を、具体的なコード例とともに紹介します。

1. コードの最適化

PHP パフォーマンスを最適化する場合、最初のタスクはコードを最適化することです。

  1. 関数呼び出しの削減

関数呼び出しでは、新しいフレームをスタックに追加し、同時にシーンを保存する必要があります。これらの操作は占有量を占めます。たくさんの思い出。したがって、関数呼び出しを最小限に抑えると、PHP プログラムのパフォーマンスを大幅に向上させることができます。具体的な最適化方法は次のとおりです。

例 1:

 // 未优化代码
 for ($i=0; $i<1000; $i++) {
     $result = strlen($str);
 }
 
 // 优化后代码
 $length = strlen($str);
 for ($i=0; $i<1000; $i++) {
     $result = $length;
 }
ログイン後にコピー

例 2:

 // 未优化代码
 function getSum($a, $b)
 {
     return $a + $b;
 }
 
 for ($i=0; $i<1000; $i++) {
     $sum = getSum(1, 2);
 }
 
 // 优化后代码
 $sum = 3;
 for ($i=0; $i<1000; $i++) {
     $result = $sum;
 }
ログイン後にコピー
  1. パラメータを参照で渡す

関数パラメータの転送 これは、特に関数が頻繁に呼び出される場合には、非常に時間のかかる操作です。したがって、変数の繰り返しコピーを避け、PHP プログラムのパフォーマンスを向上させるために、パラメーターを参照によって渡す方法を使用するようにしてください。具体的な最適化方法は次のとおりです。

例 1:

 // 未优化代码
 function getSum($a, $b)
 {
     return $a + $b;
 }
 $result = getSum(1, 2);
 
 // 优化后代码
 function getSum($a, $b, &$result)
 {
     $result = $a + $b;
 }
 getSum(1, 2, $result);
ログイン後にコピー

例 2:

 // 未优化代码
 function increase(&$a, $b)
 {
     $a += $b;
 }
 $x = 1;
 increase($x, 2);
 
 // 优化后代码
 function increase($a, $b)
 {
     $a += $b;
     return $a;
 }
 $x = increase(1, 2);
ログイン後にコピー
  1. 組み込み関数をできるだけ使用する

PHP が提供 多くの組み込み関数や拡張機能があり、これらの組み込み関数を使用することで、プログラムのパフォーマンスを最大化し、コード量を削減できます。コードを最適化するために一般的に使用される組み込み関数の例をいくつか示します:

例 1:

 // 未优化代码
 $arr = array(1, 2, 3);
 $max = max($arr);
 
 // 优化后代码
 $max = $arr[0];
 foreach ($arr as $value) {
     if ($value > $max) {
         $max = $value;
     }
 }
ログイン後にコピー

例 2:

 // 未优化代码
 $str = '1,2,3,4,5';
 $arr = explode(',', $str);
 
 // 优化后代码
 $arr = array(1, 2, 3, 4, 5);
ログイン後にコピー

2. パフォーマンスの向上

コードの最適化 PHP プログラムのパフォーマンスを向上させることはできますが、万能薬ではありません。プログラムの実行効率がボトルネックに達した場合、他のパフォーマンス改善方法を検討する必要があります。一般的に使用されるパフォーマンス向上方法の一部を次に示します。

  1. データのキャッシュ

データ キャッシュは、データベースへの繰り返しクエリや繰り返し操作を回避できる一般的なパフォーマンス向上方法です。一般的に使用されるキャッシュ方法には、ファイル キャッシュとメモリ キャッシュが含まれます。特定の実装には、Memcache や Redis などのキャッシュ テクノロジを使用できます。以下はメモリ キャッシュの例です。

 $memcache = new Memcache;
 $memcache->connect('localhost', 11211);
 $key = 'cache_key';
 $value = $memcache->get($key);
 if (!$value) {
     $value = fetchDataFromDb();
     $memcache->set($key, $value);
 }
ログイン後にコピー
  1. 複数のプロセス

複数のプロセスにより、プログラムは複数のリクエストを同時に処理できるようになり、待ち時間が短縮され、プログラムの同時実行パフォーマンスを向上させます。特定の実装には、PCNTL 拡張機能または Swoole などのツールを使用できます。以下は PCNTL マルチプロセスの例です。

 function doTask($taskid, $n)
 {
     echo "Task $taskid start...
";
     sleep($n);
     echo "Task $taskid done.
";
 }
 
 for ($i=0; $i<5; $i++) {
     $pid = pcntl_fork();
     if ($pid == -1) {
         die("fork error
");
     } elseif ($pid == 0) {
         doTask($i, rand(1, 5));
         exit(0);
     }
 }
 for ($i=0; $i<5; $i++) {
     pcntl_waitpid(-1, $status);
 }
ログイン後にコピー
  1. ファイル IO 操作を削減します

ファイル IO 操作はより多くの CPU リソースと I/O 帯域幅を占有するため、試してみてください。可能な限りファイル IO 操作を減らすと、プログラムのパフォーマンスが向上します。具体的な最適化方法は次のとおりです。

例 1: ファイルを頻繁に開いたり閉じたりしないようにします

 // 未优化代码
 for ($i=0; $i<100; $i++) {
     $fp = fopen('file.txt', 'r');
     // ...
     fclose($fp);
 }
 
 // 优化后代码
 $fp = fopen('file.txt', 'r');
 for ($i=0; $i<100; $i++) {
     // ...
 }
 fclose($fp);
ログイン後にコピー

例 2: キャッシュ メカニズムを使用する

 // 未优化代码
 $fp = fopen('file.txt', 'r');
 while (!feof($fp)) {
     $line = fgets($fp);
     // ...
 }
 fclose($fp);
 
 // 优化后代码
 $fp = fopen('file.txt', 'r');
 while ($line = fgets($fp)) {
     // ...
 }
 fclose($fp);
ログイン後にコピー

上記は、基礎となるコードの最適化です。 PHP の実際のパフォーマンス向上の具体的な方法とコード例は、PHP 開発者がプロ​​グラムのパフォーマンスを向上させるのに役立つことが期待されます。同時に、上記の方法に加えて、コンパイラの最適化やハードウェアの最適化など、プログラムのパフォーマンスをさらに向上させる方法がいくつかあります。したがって、より良いパフォーマンス向上効果を得るためには、状況に応じてさまざまな最適化手法を総合的に検討する必要があります。

以上がPHP の基礎となるコードの最適化とパフォーマンス向上の実践の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート