ホームページ  >  記事  >  バックエンド開発  >  効率的なプログラミング: PHP 最適化ガイドラインの概要

効率的なプログラミング: PHP 最適化ガイドラインの概要

不言
不言転載
2018-10-25 17:00:252432ブラウズ

この記事は、高効率プログラミングに関する PHP 最適化ガイドラインに関するものであり、一定の参考価値があるものですので、困っている方は参考にしていただければ幸いです。

  • 正規表現の使用を減らす

##str_replace Function は preg_replace よりも優れています strtr 関数は str_replace よりもはるかに高速です。

strpbrk()、strncasecmp()、strpos()、strrpos()、stripos()、strripos()。

  • 文字置換

  • ##str_replace 文字置換は通常の置換 preg_replace より高速ですが、strtr は str_replace 1/ より高速です。 4.

また、不必要な置換は行わないでください。置換がない場合でも、str_replace はパラメータにメモリを割り当てます。非常に遅い!

strpos を使用して最初に (非常に高速に) 検索し、置換する必要があるかどうかを確認し、置換する必要がある場合は置換します。

交換が必要な場合、効率はほぼ同じで、その差は0.1%程度です。

置換が必要ない場合: strpos を 200% 高速に使用します。

  • $_SERVER 変数を使用します

  • スクリプトの実行時間を取得する必要がある場合は、
$_SERVER [' REQUESET_TIME']

time() よりも優れています。 1 つは既製で直接使用でき、もう 1 つは関数によって取得された結果が必要です。

  • 変数の実行時に

    $iIncrement

  • を使用します
$i

が増減すると、$i $i よりも遅くなります。 この違いは PHP に固有のものであり、他の言語には当てはまりません。そのため、C または Java コードを変更して、すぐに高速になることを期待しないでください。実際には機能しません。

$i

は 3 つの命令 (オペコード) しか必要としないため高速ですが、$i は 4 つの命令を必要とします。

  • 大きな文字列を圧縮する

  • gzcompress() と gzuncompress() を使用して大容量の文字列を圧縮する 圧縮および解凍するそして、
データベースを保存して取り出します

この組み込み関数は gzip アルゴリズムを使用し、文字列を

90%

圧縮できます。

  • ファイルの内容を読み取る

  • 代わりに file_get_contents() を使用できます
file()

fopen()feof()fgets() およびその他の一連のメソッドでは、file_get_contents() を使用してみてください。

  • echo 出力

  • echo 文字列はドット コネクタの代わりに
comma

を使用して高速化します。 。 ただし、

echo

は言語構造であり、実際の関数ではありません。 ただし、カンマで区切られた複数の文字列を「関数」パラメータとして渡すことができるため、より高速になります。

autoload

の乱用と不適切に設計された自動ロード関数のみです。So,

#autoload

などの魔法のメソッドは使用しないようにしてください。これは議論の対象になります。

  • 機密情報をブロックします

  • error_reporting() 関数を使用して、潜在的に機密情報がユーザーに表示されないようにします。

理想的には、php.ini ファイルでエラー報告を完全に無効にする必要があります。

共有仮想ホストを使用している場合は、php.ini を変更できないため、error_reporting() 関数を追加することをお勧めします。

これを各スクリプト ファイルの最初の行に置くか、

require_once()

を使用してロードします。これにより、エラー発生時に機密 SQL クエリとパスが表示されないように効果的に保護できます

  • 終了タグのない純粋な PHP コード

  • ファイルの内容が純粋な PHP コードである場合は、次の場所で PHP を削除するのが最善です。ファイルの終わり 終了タグ
?>

これにより、PHP 終了タグの後にスペースまたは改行が誤って追加された場合に、PHP がこれらのスペースの出力を開始することを回避できますが、現時点ではスクリプト内でそれらを出力するつもりはありません。

  • register_globalsmagic quotes

  • これは決して使用しないでください。は 2 つの非常に古い関数であり、当時 (10 年前) では良い方法だったかもしれませんが、現在はそうではないようです。

PHP の古いバージョンでは、インストール中にこれら 2 つの機能がデフォルトで有効になるため、セキュリティの脆弱性、プログラミング エラー、その他の問題が発生する可能性があります。

たとえば、変数はユーザーがデータを入力したときにのみ作成されます。

両方の関数は PHP5.4.0 以降廃止されたため、すべてのプログラマはこれらの関数を使用しないようにしてください。

過去のプログラムでこれら 2 つの機能が使用されていた場合は、できるだけ早く削除してください。

  • includerequire

    では絶対パス

を使用してください絶対パスを使用します。 相対パスが含まれている場合、PHP は

include_path

内のファイルを検索します。絶対パスを使用すると、このような問題が回避され、パスの解決にかかる時間が短縮されます。 <p>ファイルをインクルードするために <code>require_onceinclude_once を使用しないでください。これらには、ファイルが参照されているかどうかを判断する追加のプロセスがあります。可能であれば使用しないようにしてください。

代わりに、require メソッドと include メソッドを使用してください。

  • #関数はクラス メソッドより高速です

#パラメーターを 1 つだけ指定し、関数本体を空にして関数を呼び出すとコストがかかります時間は、7-8$localvar 操作を掛けたものと同じです。

同じ機能を持つクラス メソッドには、約 15 個の $localvar 操作が必要です。

  • # サブクラス メソッドを使用する

#再利用可能なメソッドのみを基本クラスに配置し、他の関数を基本クラスに配置するようにしてください。サブクラス クラスに実装されているため、サブクラスのメソッドのパフォーマンスは基本クラスのメソッドよりも優れています。

  • パラメータを参照渡し

#パラメータのアドレス参照により関数の複数の戻り値を実現これは、パラメータを参照によって渡すよりも優れています。値の転送は効率的です。方法は、パラメーター変数の前に

#& を追加することです。

  • メソッドをできるだけ静的にする

メソッドを静的にできる場合は、メソッドを静的として宣言します。

1/4 を改善することができます。私がテストした場合でも、ほぼ 3 倍改善されました。

静的メソッドと非静的メソッドの効率における主な違いは、

メモリです。静的メソッドはプログラムの開始時にメモリを生成し、インスタンス メソッド (非静的メソッド) はプログラムの実行中にメモリを生成します。

したがって、静的メソッドは直接呼び出すことができますが、インスタンス メソッドは最初にインスタンスを作成してから呼び出す必要があります。静的メソッドは非常に高速です。

しかし、メソッドが多すぎるとメモリを占有します

どんな言語もメモリとディスク上で動作しますが、それがオブジェクト指向かどうかはソフトウェア層の問題であり、最下層は同じですが実装方法が異なります。

静的メモリはプログラムの先頭で生成されるため連続的ですが、インスタンス メソッドは離散空間に適用されるため、当然ながら静的メソッドほど高速ではありません。

静的メソッドは常に同じメモリを呼び出します。欠点は、自動的に破棄できないことですが、インスタンス化は破棄できることです。

以上が効率的なプログラミング: PHP 最適化ガイドラインの概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcsdn.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。