ホームページ バックエンド開発 PHPチュートリアル PHP プログラマーが PHP コードの最適化について知っておくべき 40 のこと_PHP チュートリアル

PHP プログラマーが PHP コードの最適化について知っておくべき 40 のこと_PHP チュートリアル

Jul 13, 2016 am 10:30 AM
php PHPコード 最適化 プログラマー

PHP プログラマーが知っておくべき PHP コード最適化のための 40 のヒント:

1. メソッドを静的にできる場合は、静的に宣言します。速度は4倍まで上げることができます。

2.echo は print よりも高速です。

3. 文字列連結の代わりに、echo の複数のパラメータを使用します (翻訳: ピリオドの代わりにカンマを使用することを指します)。

4. for ループを実行する前に最大ループ数を決定し、ループするたびに最大値を計算しないでください。

5. 未使用の変数、特に大きな配列の登録を解除して、メモリを解放します。

6. __get、__set、__autoload の使用は避けてください。

7.require_once() は高価です。

8. ファイルを含める場合はフルパスを使用すると、オペレーティング システムのパスを解決する時間が短縮されます。

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 モジュールを開きます。

16. 使用が終了したら、データベース接続を閉じる必要があります。

17.$row['id'] は $row[id] よりも 7 倍効率的です。

18. エラーメッセージは高価です。

19. for ループでは関数を使用しないようにしてください。たとえば、for ($x=0; $x < count($array); $x) はループするたびに count() 関数を呼び出します。

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 は、静的な HTML ページを解析するよりも 2 ~ 10 倍遅く PHP スクリプトを解析します。使用する静的な HTML ページを増やし、スクリプトを減らすようにしてください。

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

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

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

(下記例)

if (strlen($foo)

(以下のヒントと比較してください)

if (!isset($foo{5})) { echo "Foo が短すぎます" }

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 拡張機能として実装することを検討できます。

興味がありそうな記事

    PHPプログラマーのノートステーションでは優秀な記事を有料で募集しています
  • PHPプログラマーの変革: 今は仕事を辞めて果物を売っています
  • PHPはソースコードを保護するために制限付きドメイン名を実装していますコピーされないようにします
  • PHP は HTML Web ページのコードを圧縮して、ネットワークデータ送信の量を減らし、スペース、タブ、およびコメントマークをクリアします
  • PHP 関数memory_get_usage を使用して現在の PHP メモリ消費量を取得し、プログラムのパフォーマンスを最適化します
  • PHPプログラマーズノートサイトで友達交換 連鎖の原理
  • phpプログラマーズノートステーションの前バージョン記録
  • phpはheader()を使ってファイルのダウンロードを実装、ダウンロードしたファイルが破損していると表示されてダウンロードできない問題の解決策開かれます

http://www.bkjia.com/PHPjc/764203.htmlwww.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/764203.html技術記事 PHP プログラマーが知っておくべき PHP コードを最適化するための 40 のヒント: 1. メソッドを静的に宣言できる場合は、静的に宣言します。速度は4倍まで上げることができます。 2.エコーは印刷よりも高速です...
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

CakePHP データベースの操作 CakePHP データベースの操作 Sep 10, 2024 pm 05:25 PM

CakePHP でデータベースを操作するのは非常に簡単です。この章では、CRUD (作成、読み取り、更新、削除) 操作について理解します。

CakePHP の日付と時刻 CakePHP の日付と時刻 Sep 10, 2024 pm 05:27 PM

Cakephp4 で日付と時刻を操作するには、利用可能な FrozenTime クラスを利用します。

CakePHP ファイルのアップロード CakePHP ファイルのアップロード Sep 10, 2024 pm 05:27 PM

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP ルーティング CakePHP ルーティング Sep 10, 2024 pm 05:25 PM

この章では、ルーティングに関連する次のトピックを学習します。

CakePHP について話し合う CakePHP について話し合う Sep 10, 2024 pm 05:28 PM

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

CakePHP バリデータの作成 CakePHP バリデータの作成 Sep 10, 2024 pm 05:26 PM

Validator は、コントローラーに次の 2 行を追加することで作成できます。

CakePHP のロギング CakePHP のロギング Sep 10, 2024 pm 05:26 PM

CakePHP へのログインは非常に簡単な作業です。使用する関数は 1 つだけです。 cronjob などのバックグラウンド プロセスのエラー、例外、ユーザー アクティビティ、ユーザーが実行したアクションをログに記録できます。 CakePHP でのデータのログ記録は簡単です。 log()関数が提供されています

See all articles