検索

出典: http://blog.csdn.net//wgw335363240/article/details/41844879


文字列を囲むには二重引用符の代わりに一重引用符を使用すると高速になります。 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. ファイルをインクルードする場合は、絶対パスを使用するようにしてください。これにより、PHP による include_path 内のファイルの検索速度が低下し、オペレーティング システムのパスの解析に必要な時間が短縮されるからです。

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 はおそらく、グローバル変数が存在するかどうかを確認します。

23. メソッド呼び出しは、10個のメソッドを追加したため(メソッドのテスト前と後)、クラスに定義されているメソッドの数とは関係ないようですが、パフォーマンスに変化はありませんでした。

24. 派生クラスのメソッドは、基本クラスで定義された同じメソッドよりも高速に実行されます。

25. パラメータを 1 つ指定して空の関数を呼び出すと、ローカル変数のインクリメント演算を 7 ~ 8 回実行するのと同じ時間がかかります。同様のメソッドを呼び出すのにかかる時間は、ローカル変数のインクリメント操作 15 回に近くなります。

26. Apache が PHP スクリプトを解析するのにかかる時間は、静的な HTML ページを解析するよりも 2 ~ 10 倍遅くなります。使用する静的な HTML ページを増やし、スクリプトを減らすようにしてください。

27. スクリプトをキャッシュできない限り、呼び出されるたびに再コンパイルされます。 PHP キャッシュ メカニズムを導入すると、通常、コンパイルのオーバーヘッドが排除され、パフォーマンスが 25% ~ 100% 向上します。

28. できるだけキャッシュするようにしてください。memcached を使用できます。 Memcached は、動的 Web アプリケーションを高速化し、データベースの負荷を軽減するために使用できる高性能メモリ オブジェクト キャッシュ システムです。 OP コードのキャッシュは、リクエストごとにスクリプトを再コンパイルする必要がないように便利です。

29. 文字列を操作し、その長さが特定の要件を満たしているかどうかを確認する必要がある場合、当然 strlen() 関数を使用します。この関数は計算を行わず、zval 構造体 (PHP 変数の格納に使用される C の組み込みデータ構造体) に格納されている既知の文字列長を返すだけなので、非常に高速に実行されます。ただし、 strlen() は関数であるため、関数呼び出しは小文字などの多くの手順を経るため、多少遅くなります (注釈: 小文字の関数名を指します。PHP は大文字と小文字の関数名を区別しません)。 )、ハッシュ検索、呼び出された関数と一緒に実行されます。場合によっては、 isset() 手法を使用してコードの実行を高速化できます。

(下記例)

if (strlen($foo)

(以下の手法と比較してください)

if (!isset($foo{5})) { echo “Foo is too short”$$ }

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 ステートメントを最適化し、できるだけ少ない Insert 操作と Update 操作を実行します (更新時、I 46.可能な限り PHP の内部関数を使用します (ただし、PHP に存在しない関数を見つけるために、カスタム関数を作成することで記述できる時間を無駄にしました。これは経験の問題です!); 47.ループ内で変数を宣言しないでください。特に大きな変数: オブジェクト (これは PHP に限らず問題のようですよね?)

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

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

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

51. 文字列を引用符で囲むには、二重引用符の代わりに単一引用符を使用してください。 ;

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

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

最後に、一般的で重要な PHP 最適化戦略をまとめます。

1. include と require で絶対パスを使用すると、パスの分析に費やす時間が短縮されます

2. For($ などの関数をループ内で使用しないでください)。 x=0; $x 4. ループ内のループが多すぎると実行効率が低下します

5. 絶対に必要な場合を除き、ループ ステートメント内の関連クエリの実行を禁止します。 、これはやめてください

6. 文字列の接続には一重引用符を使用するようにしてください

7. 変数のコピー操作を可能な限り減らします。例: $description = $_POST['description'];

8. if/else が多すぎる場合は、できるだけ if/else の代わりに switch/case を使用します。コードをより簡潔にできます

9. キャッシュメカニズムをオンにすると、パフォーマンスが向上し、MySQL の負荷が軽減されます

10. gzip 圧縮をオンにします

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
誇大広告を超えて:今日のPHPの役割の評価誇大広告を超えて:今日のPHPの役割の評価Apr 12, 2025 am 12:17 AM

PHPは、特にWeb開発の分野で、最新のプログラミングで強力で広く使用されているツールのままです。 1)PHPは使いやすく、データベースとシームレスに統合されており、多くの開発者にとって最初の選択肢です。 2)動的コンテンツ生成とオブジェクト指向プログラミングをサポートし、Webサイトを迅速に作成および保守するのに適しています。 3)PHPのパフォーマンスは、データベースクエリをキャッシュおよび最適化することで改善でき、その広範なコミュニティと豊富なエコシステムにより、今日のテクノロジースタックでは依然として重要になります。

PHPの弱い参照は何ですか、そしていつ有用ですか?PHPの弱い参照は何ですか、そしていつ有用ですか?Apr 12, 2025 am 12:13 AM

PHPでは、弱い参照クラスを通じて弱い参照が実装され、ガベージコレクターがオブジェクトの回収を妨げません。弱い参照は、キャッシュシステムやイベントリスナーなどのシナリオに適しています。オブジェクトの生存を保証することはできず、ごみ収集が遅れる可能性があることに注意する必要があります。

PHPで__invoke Magicメソッドを説明してください。PHPで__invoke Magicメソッドを説明してください。Apr 12, 2025 am 12:07 AM

\ _ \ _ Invokeメソッドを使用すると、オブジェクトを関数のように呼び出すことができます。 1。オブジェクトを呼び出すことができるように\ _ \ _呼び出しメソッドを定義します。 2。$ obj(...)構文を使用すると、PHPは\ _ \ _ Invokeメソッドを実行します。 3。ロギングや計算機、コードの柔軟性の向上、読みやすさなどのシナリオに適しています。

同時性については、PHP 8.1の繊維を説明します。同時性については、PHP 8.1の繊維を説明します。Apr 12, 2025 am 12:05 AM

繊維はPhp8.1で導入され、同時処理機能が改善されました。 1)繊維は、コルーチンと同様の軽量の並行性モデルです。 2)開発者がタスクの実行フローを手動で制御できるようにし、I/O集約型タスクの処理に適しています。 3)繊維を使用すると、より効率的で応答性の高いコードを書き込むことができます。

PHPコミュニティ:リソース、サポート、開発PHPコミュニティ:リソース、サポート、開発Apr 12, 2025 am 12:04 AM

PHPコミュニティは、開発者の成長を支援するための豊富なリソースとサポートを提供します。 1)リソースには、公式のドキュメント、チュートリアル、ブログ、LaravelやSymfonyなどのオープンソースプロジェクトが含まれます。 2)StackOverFlow、Reddit、およびSlackチャネルを通じてサポートを取得できます。 3)開発動向は、RFCに従うことで学ぶことができます。 4)コミュニティへの統合は、積極的な参加、コード共有への貢献、および学習共有への貢献を通じて達成できます。

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:それは死にかけていますか、それとも単に適応していますか?PHP:それは死にかけていますか、それとも単に適応していますか?Apr 11, 2025 am 12:13 AM

PHPは死にかけていませんが、常に適応して進化しています。 1)PHPは、1994年以来、新しいテクノロジーの傾向に適応するために複数のバージョンの反復を受けています。 2)現在、電子商取引、コンテンツ管理システム、その他の分野で広く使用されています。 3)PHP8は、パフォーマンスと近代化を改善するために、JITコンパイラおよびその他の機能を導入します。 4)Opcacheを使用してPSR-12標準に従って、パフォーマンスとコードの品質を最適化します。

PHPの未来:適応と革新PHPの未来:適応と革新Apr 11, 2025 am 12:01 AM

PHPの将来は、新しいテクノロジーの傾向に適応し、革新的な機能を導入することで達成されます。1)クラウドコンピューティング、コンテナ化、マイクロサービスアーキテクチャに適応し、DockerとKubernetesをサポートします。 2)パフォーマンスとデータ処理の効率を改善するために、JITコンパイラと列挙タイプを導入します。 3)パフォーマンスを継続的に最適化し、ベストプラクティスを促進します。

See all articles

ホット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衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

メモ帳++7.3.1

メモ帳++7.3.1

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

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン