ホームページ バックエンド開発 PHPチュートリアル PHP プログラムの効率を最適化するためのいくつかの戦略の概要

PHP プログラムの効率を最適化するためのいくつかの戦略の概要

Jun 13, 2016 pm 12:23 PM
echo isset php strlen

PHP プログラムの効率を最適化するための戦略の概要

1. file、fopen、feof、fgets およびその他の一連のメソッドの代わりに file_get_contents を使用できる場合は、より効率的である file_get_contents を使用してください。 ! ただし、URL ファイルを開くときは、file_get_contents の PHP バージョンの問題に注意してください。
2. PHP のファイル操作効率は低くありません。 >
3. Select SQL ステートメントを最適化し、可能な限り少ない挿入操作と更新操作を実行します (更新について批判されました)。
4. 可能な限り PHP 内部を使用します。関数 (ただし、PHP に存在しない関数を見つけるために、カスタム関数を作成することで作成できる時間を無駄にしました。これは経験の問題です!);
5.ループ内で使用しないでください。変数、特に大きな変数を宣言します。(これは PHP だけの問題ではないようですよね?)
6. マルチでネストされた代入をループしないようにしてください。 -次元配列;
7. PHP の内部文字列操作関数を使用できる場合は、正規表現を使用しないでください。foreach を使用してください。 while ループと for ループの代わりに、
9. 文字列を引用符で囲む場合は、i=i の代わりに i =1 を使用します。 1. C/C の習慣と効率に合わせて「まだ高い」
11. グローバル変数は使い切ると unset() される必要があります
12。複数のネストされたループを使用する場合は、可能であれば、最も長いループを内側の層に配置し、最も短いループを外側の層に配置する必要があります。これにより、CPU がループ層をまたいで処理する回数が減り、プログラムのパフォーマンスが最適化されます。
PHP コードを最適化する 40 のヒント
1. メソッドを静的にできる場合は、静的に宣言します。速度は4倍まで上げることができます。
2. エコーは印刷よりも高速です。
3. 文字列連結の代わりに、echo の複数のパラメータを使用します (注釈: ピリオドの代わりにカンマを使用することを指します)。
4. for ループを実行する前に最大ループ数を決定します。ループごとに最大値を計算しません。
5. 未使用の変数、特に大きな配列の登録を解除して、メモリを解放します。
6. __get、__set、__autoload の使用は避けてください。
7. require_once() は高価です。
8. ファイルを含める場合はフルパスを使用すると、オペレーティング システムのパスを解決する時間が短縮されます。
9. スクリプトの実行開始時刻 (注釈: サーバーがクライアント要求を受信する) を知りたい場合は、time() よりも $_SERVER[‘REQUEST_TIME’] を使用する方が適しています。
10. 正規表現の代わりに strncasecmp、strpbrk、stripos 関数を使用して同じ関数を完成できるかどうかを確認します。
11. str_replace 関数は preg_replace 関数よりも高速ですが、strtr 関数は str_replace 関数よりも 4 倍効率的です。
12. 文字列置換関数がパラメータとして配列または文字を受け入れ、パラメータの長さが長すぎない場合は、渡される各パラメータが 1 文字になるように追加の置換コードを記述することを検討できます。クエリと置換のパラメータとして配列を受け入れるコードを 1 行記述するだけではありません。
13. 複数の if、else if ステートメントを使用するよりも、選択的分岐ステートメント (言い換え: switch case) を使用する方が良いです。
14. [email protected]
15. Apache の mod_deflate モジュールを開きます。
16. 終了したらデータベース接続を閉じる必要があります。 17. $row[‘id’] は $row[id] よりも 7 倍効率的です。
18. エラーメッセージは高価です。
19. count() 関数を呼び出す for ($x=0; $x < count($array); $x) などの関数を for ループ内で使用しないようにしてください。ループするたびに。
20. メソッド内のローカル変数を増やすのが最も速いです。関数内でローカル変数を呼び出すのとほぼ同じ速度です。
21. グローバル変数のインクリメントは、ローカル変数のインクリメントより 2 倍遅くなります。
22. オブジェクト プロパティ ($this->prop など) のインクリメントは、ローカル変数のインクリメントより 3 倍遅くなります。
23. 未定義のローカル変数のインクリメントは、事前定義されたローカル変数のインクリメントより 9 ~ 10 倍遅くなります。
24. 関数内で呼び出さずにローカル変数を定義するだけでも、(ローカル変数をインクリメントするのと同じ程度に) 処理が遅くなります。 PHP はおそらく、グローバル変数が存在するかどうかを確認します。
25. 10 個のメソッドを追加しました (メソッドのテスト前と後の両方) が、パフォーマンスに変化はなかったので、メソッド呼び出しはクラスで定義されたメソッドの数に依存しないように見えます。
26. 派生クラスのメソッドは、基本クラスで定義された同じメソッドよりも高速に実行されます。
27. 1 つのパラメーターを指定して空の関数を呼び出すには、7 ~ 8 回のローカル変数のインクリメント操作を実行するのと同じ時間がかかります。同様のメソッド呼び出しには、15 近くのローカル変数の増分が必要です。
28. 文字列を囲むには二重引用符の代わりに一重引用符を使用すると高速になります。 PHP は二重引用符で囲まれた文字列内の変数を検索するため、一重引用符は検索しません。もちろん、これは文字列に変数を含める必要がない場合にのみ実行できます。
29. 複数の文字列を出力する場合、文字列を区切るにはピリオドの代わりにカンマを使用すると高速になります。注: これは、複数の文字列をパラメータとして受け取ることができる「関数」です (注釈: PHP マニュアルには、echo は実際の関数ではなく言語構造であると記載されているため、関数は二重引用符で囲まれています)。 。
30. Apache が PHP スクリプトを解析するのにかかる時間は、静的 HTML ページを解析するよりも 2 ~ 10 倍遅くなります。使用する静的な HTML ページを増やし、スクリプトを減らすようにしてください。
31. スクリプトをキャッシュできない限り、呼び出されるたびに再コンパイルされます。 PHP キャッシュ メカニズムを導入すると、通常、コンパイルのオーバーヘッドが排除され、パフォーマンスが 25% ~ 100% 向上します。
32. できるだけキャッシュするようにしてください。memcached を使用できます。 Memcached は、動的 Web アプリケーションを高速化し、データベースの負荷を軽減するために使用できる高性能メモリ オブジェクト キャッシュ システムです。 OP コードのキャッシュは、リクエストごとにスクリプトを再コンパイルする必要がないように便利です。
33. 文字列を操作し、その長さが特定の要件を満たしているかどうかを確認する必要がある場合は、当然 strlen() 関数を使用します。この関数は計算を行わず、zval 構造体 (PHP 変数の格納に使用される C の組み込みデータ構造体) に格納されている既知の文字列長を返すだけなので、かなり高速に実行されます。ただし、strlen() は関数であるため、関数呼び出しは小文字などの多くの手順を経るため、多少遅くなります (注釈: 小文字の関数名を指します。PHP は関数名の大文字と小文字を区別しません)。 )、ハッシュ検索、呼び出された関数と一緒に実行されます。場合によっては、 isset() トリックを使用してコードの実行を高速化できます。
例 (以下の例)
if (strlen($foo) < 5) { echo “Foo が短すぎます” }
vs. (以下のトリックと比較してください)
if (!isset($foo{5})) { echo “Foo は短すぎます” }
isset() の呼び出しは、strlen() よりも高速です。これは、後者とは異なり、言語構造としての isset() の実行に関数の検索と小文字が必要ないためです。つまり、実際には、最上位コードで文字列の長さをチェックするオーバーヘッドはそれほどかかりません。
34. 変数 $i のインクリメントまたはデクリメントを実行する場合、$i は $i よりも遅くなります。この違いは PHP に固有のものであり、他の言語には当てはまりません。そのため、C または Java コードを変更して、すぐに高速になることを期待しないでください。実際には機能しません。 $i は 4 つの命令を必要とするのに対し、$i は 3 つの命令 (オペコード) のみを必要とするため、より高速です。ポストインクリメントでは、実際には、後でインクリメントされる一時変数が作成されます。プレフィックスの増分は、元の値に直接増加します。これは、Zend の PHP オプティマイザーによって行われるような、最適化の一種です。すべてのコマンド オプティマイザーが同じ最適化を行うわけではなく、コマンド オプティマイザーがインストールされていないインターネット サービス プロバイダー (ISP) やサーバーが多数存在するため、この最適化を念頭に置くことをお勧めします。
35. オブジェクト指向 (OOP) である必要はありません。オブジェクト指向は多くの場合非常に高価であり、各メソッドとオブジェクトの呼び出しは大量のメモリを消費します。
36. すべてのデータ構造を実装するためにクラスを使用する必要はありません。配列も便利です。
37. どのコードを実際に再利用するかを慎重に考えてください。
38. 必要に応じていつでもコードをメソッドに分割できます。
39. できるだけ多くの PHP 組み込み関数を使用するようにしてください。
40. コード内に時間のかかる関数が多数ある場合は、それらを C 拡張機能として実装することを検討できます。
41. コードをプロファイリングします。チェッカーは、コードのどの部分にどれくらいの時間がかかっているかを示します。 Xdebug デバッガーには、コードの全体的な整合性を評価し、コード内のボトルネックを明らかにする検査ルーチンが含まれています。
42. mod_zip を Apache モジュールとして使用すると、データを即座に圧縮し、データ送信量を 80% 削減できます。

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

PHPとPython:2つの一般的なプログラミング言語を比較します PHPとPython:2つの一般的なプログラミング言語を比較します Apr 14, 2025 am 12:13 AM

PHPとPythonにはそれぞれ独自の利点があり、プロジェクトの要件に従って選択します。 1.PHPは、特にWebサイトの迅速な開発とメンテナンスに適しています。 2。Pythonは、データサイエンス、機械学習、人工知能に適しており、簡潔な構文を備えており、初心者に適しています。

アクション中のPHP:実際の例とアプリケーション アクション中のPHP:実際の例とアプリケーション Apr 14, 2025 am 12:19 AM

PHPは、電子商取引、コンテンツ管理システム、API開発で広く使用されています。 1)eコマース:ショッピングカート機能と支払い処理に使用。 2)コンテンツ管理システム:動的コンテンツの生成とユーザー管理に使用されます。 3)API開発:RESTFUL API開発とAPIセキュリティに使用されます。パフォーマンスの最適化とベストプラクティスを通じて、PHPアプリケーションの効率と保守性が向上します。

PHP:Web開発の重要な言語 PHP:Web開発の重要な言語 Apr 13, 2025 am 12:08 AM

PHPは、サーバー側で広く使用されているスクリプト言語で、特にWeb開発に適しています。 1.PHPは、HTMLを埋め込み、HTTP要求と応答を処理し、さまざまなデータベースをサポートできます。 2.PHPは、ダイナミックWebコンテンツ、プロセスフォームデータ、アクセスデータベースなどを生成するために使用され、強力なコミュニティサポートとオープンソースリソースを備えています。 3。PHPは解釈された言語であり、実行プロセスには語彙分析、文法分析、編集、実行が含まれます。 4.PHPは、ユーザー登録システムなどの高度なアプリケーションについてMySQLと組み合わせることができます。 5。PHPをデバッグするときは、error_reporting()やvar_dump()などの関数を使用できます。 6. PHPコードを最適化して、キャッシュメカニズムを使用し、データベースクエリを最適化し、組み込み関数を使用します。 7

PHPの永続的な関連性:それはまだ生きていますか? PHPの永続的な関連性:それはまだ生きていますか? Apr 14, 2025 am 12:12 AM

PHPは依然として動的であり、現代のプログラミングの分野で重要な位置を占めています。 1)PHPのシンプルさと強力なコミュニティサポートにより、Web開発で広く使用されています。 2)その柔軟性と安定性により、Webフォーム、データベース操作、ファイル処理の処理において顕著になります。 3)PHPは、初心者や経験豊富な開発者に適した、常に進化し、最適化しています。

PHP対Python:違いを理解します PHP対Python:違いを理解します Apr 11, 2025 am 12:15 AM

PHP and Python each have their own advantages, and the choice should be based on project requirements. 1.PHPは、シンプルな構文と高い実行効率を備えたWeb開発に適しています。 2。Pythonは、簡潔な構文とリッチライブラリを備えたデータサイエンスと機械学習に適しています。

PHPおよびPython:コードの例と比較 PHPおよびPython:コードの例と比較 Apr 15, 2025 am 12:07 AM

PHPとPythonには独自の利点と短所があり、選択はプロジェクトのニーズと個人的な好みに依存します。 1.PHPは、大規模なWebアプリケーションの迅速な開発とメンテナンスに適しています。 2。Pythonは、データサイエンスと機械学習の分野を支配しています。

PHP対その他の言語:比較 PHP対その他の言語:比較 Apr 13, 2025 am 12:19 AM

PHPは、特に迅速な開発や動的なコンテンツの処理に適していますが、データサイエンスとエンタープライズレベルのアプリケーションには良くありません。 Pythonと比較して、PHPはWeb開発においてより多くの利点がありますが、データサイエンスの分野ではPythonほど良くありません。 Javaと比較して、PHPはエンタープライズレベルのアプリケーションでより悪化しますが、Web開発により柔軟性があります。 JavaScriptと比較して、PHPはバックエンド開発により簡潔ですが、フロントエンド開発のJavaScriptほど良くありません。

PHPおよびPython:さまざまなパラダイムが説明されています PHPおよびPython:さまざまなパラダイムが説明されています Apr 18, 2025 am 12:26 AM

PHPは主に手順プログラミングですが、オブジェクト指向プログラミング(OOP)もサポートしています。 Pythonは、OOP、機能、手続き上のプログラミングなど、さまざまなパラダイムをサポートしています。 PHPはWeb開発に適しており、Pythonはデータ分析や機械学習などのさまざまなアプリケーションに適しています。

See all articles