ホームページ > バックエンド開発 > PHPチュートリアル > PHPの実行速度を改善する方法

PHPの実行速度を改善する方法

小云云
リリース: 2023-03-21 19:56:01
オリジナル
3542 人が閲覧しました

この記事では主に PHP の実行速度を向上させる方法を紹介します。全部で 50 以上ありますので、皆さんのお役に立てれば幸いです。

1。クラスメソッドをstaticとして定義できる場合は、staticとして定義してみると、その速度はほぼ4倍向上します。
2, $row[’id’] の速度は、$row[id]7 倍です。
3 ) 代わりに、echo$str1,$str2などの文字列連結。 4for
ループを実行する前に最大ループ数を決定します。ループごとに最大値を計算するのではなく、代わりにforeach を使用することをお勧めします。 5。未使用の変数、特に大きな配列の登録を解除して、メモリを解放します。
6__get
__set
__autoload
の使用を避けるようにしてください。 7
require_once()は高価です。 8ファイルが含まれている場合は、絶対パスを使用するようにしてください。これにより、PHP
がファイルを見つけるためにinclude_pathにアクセスする速度と、ファイルの解析に必要な時間が回避されるためです。オペレーティング システムのパスが少なくなります。
9
、スクリプトの実行が開始される瞬間を知りたい場合(アノテーション: つまり、サーバーがクライアントリクエストを受信します)を使用するには、$_SERVER['REQUEST_TIME ']
time()
よりも優れています。 10、関数は正規表現を置き換えて同じ関数を完成させます。 11
str_replace
関数は preg_replace 関数よりも高速ですが、strtr
関数の効率は str_replace の効率です。
関数
4回。 12。文字列置換関数がパラメータとして配列または文字を受け入れ、パラメータの長さが長すぎない場合は、渡される各パラメータが 1 文字になるように追加の置換コードを記述することを検討できます。 1 行のコードを記述する クエリと置換のパラメータとして配列を受け入れます。 13では、選択分岐ステートメント(翻訳: switch case)を使用する方が、複数の

if
else if

ステートメントを使用するよりも優れています。
14@を使用してエラーメッセージをブロックするのは非常に非効率的です。 15apache mod_deflate モジュールを開きます。これにより、Web ページの閲覧速度が向上します。
16。データベース接続は、使用が終了したら閉じる必要があります。長い接続は使用しないでください。
17、エラーメッセージは高価です。
18。メソッド内のローカル変数を増やすのが最も速いです。関数内でローカル変数を呼び出すのとほぼ同じ速度です。
19、グローバル変数のインクリメントは、ローカル変数のインクリメントより 2 倍遅くなります。
20、オブジェクト プロパティのインクリメント ($this->prop++ など) は、ローカル変数のインクリメントより 3 倍遅くなります。
21
、未定義のローカル変数のインクリメントは、事前定義されたローカル変数のインクリメントよりも9 から10 倍遅くなります。
22
。関数内で呼び出さずにローカル変数だけを定義すると(ローカル変数を1つ増やすのと同じです)
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 code)
のキャッシュは、リクエストごとにスクリプトを再コンパイルする必要がないように
便利です。 29、文字列を操作し、その長さが特定の要件を満たしているかどうかを確認する必要がある場合は、当然 strlen()
を使用します。
関数。この関数は計算を行わず、zval 構造体 (PHP
変数を保存するための C の組み込みデータ構造) の値を返すだけなので、非常に高速に実行されます。 に保存されている既知の文字列の長さ。ただし、strlen()は関数であるため、関数呼び出しは小文字
(
注釈:関数名の小文字を指します)など多くの手順を経るため、
は多少遅くなります。
PHP関数名は大文字と小文字が区別されません)、ハッシュ検索は呼び出された関数と一緒に実行されます。場合によっては、
isset()
トリックを使用してコードの実行を高速化できます。 isset()の呼び出しは、たまたまstrlen()よりも高速です。これは、が言語構造としての
isset()
の実行が関数の検索を必要としないことを意味するという点で後者とは異なるためです。 の文字が小さい文字で書かれています。つまり、実際には、最上位コードで文字列の長さをチェックするオーバーヘッドはそれほどかかりません。

34
、変数$i のインクリメントまたはデクリメントを実行すると、$i++++$i よりも遅くなります。 この違いは PHP 特有のであり、他の言語には当てはまりません。そのため、C
Java コードを変更して、即座に 高速になることを期待しないでください。それは無駄です。 ++$i
3 命令(オペコード) のみを必要とするため高速ですが、$i++4 命令を必要とします。 Postfix increment は実際には、後でインクリメントされる一時変数を作成します。プレフィックスの増分は、元の値に直接増加します。これは最適化の一種で、Zend

PHP オプティマイザーが行うのと同じです。 すべてのコマンド オプティマイザーが同じ最適化を行うわけではなく、コマンド オプティマイザーがインストールされていないインターネット サービス プロバイダー (ISP) も多数あるため、この最適化
を念頭に置くことをお勧めします。そしてサーバー。

35
、すべてがオブジェクト指向である必要があるわけではありません(OOP)
、オブジェクト指向は多くの場合非常に高価であり、各メソッドとオブジェクトの呼び出しは大量のメモリを消費します。 36 すべてのデータ構造を実装するためにクラスを使用する必要はありません。
37
。本当に再利用するコードを慎重に検討してください。必要な場合はいつでもコードをメソッドに分割できます。 39
、多数の PHP 組み込み関数を使用してみてください。
40
。コード内に多くの時間のかかる関数がある場合は、
C 拡張機能を使用して実装することを検討できます。 41
、コードを評価して検査してください
(プロフィール)。チェッカーは、コードのどの部分にどれくらいの時間がかかっているかを示します。 Xdebug
デバッガーには検査手順が含まれており、評価検査によりコード全体のボトルネックを示すことができます。
42mod_zip Apache モジュールとして使用すると、データを瞬時に圧縮し、データ転送量を
80%削減できます。
43filefopenfeof、の代わりにfile_get_contentsを使用できますsのような一連の方法の場合
file_get_contents の量を使用するようにしてください。その方が効率的です ! ただし、URL
ファイルを開くときは、
file_get_contents に注意してくださいPHP ;
44
PHP のファイル操作効率は低くありませんが、 Update
操作を実行します。 ;46 PHPを使用してください内部関数(しかし、私はPHPを見つけたいだけです
それは関数内に存在せず、カスタム関数を書くために使用できたはずの
時間を無駄にしています。経験の問題です!);47。ループ内で変数、特に大きな変数を宣言しないでください: オブジェクト(これは機能しないようです。で注意すべき点です。 PHP
?);48
、多次元配列でネストされた代入をループしないようにしてください;49PHP 内部文字を使用できます 文字列操作関数の場合、正規表現
を使用しないでください。50
foreach
の方が効率的です。
while および for ループの代わりに
foreach を使用してみてください。 ;单、二重引用符番号の参照文字列を単一引用符番号に置き換えます。c/c++ 習慣は依然として効率的です";53グローバル 変数の場合、それらは unset() である必要があります。
使用後は取り外します。
関連する推奨事項:
PHP の実行速度を向上させるためのヒントPHP の実行速度を向上させる方法PHP の実行速度を向上させる方法

以上がPHPの実行速度を改善する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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