PHPプログラミング効率の向上キャッシュメカニズム導入によるパフォーマンス向上


二重引用符の代わりに単一引用符で文字列を含めると、より速くなります.PHPは二重引用符で囲まれた文字列の中で変数を検索するので、一重引用符はできません.注意:echoだけがそうすることができます.それは複数の文字列をパラメータとすることができる「関数」です.
1、クラスのメソッドをstaticと定義できる場合は、できるだけstaticと定義し、その速度は4倍近く向上します.
2,$row['id’]の速度は$row[id]の7倍である.
3、echoはprintより速く、echoの多重パラメータ(訳注:句点ではなくカンマ)を文字列接続の代わりに使用します.例えば、echo$str 1、$str 2です.
4、forサイクルを実行する前に最大サイクル数を決定し、サイクルごとに最大値を計算しないで、foreachを用いたほうがよい.
5、不要な変数、特に大きな配列をログアウトして、メモリを解放します.
6、なるべく使わないようにする_get,__set,__autoload.
7、require_once()は高価です.
8、includeファイルの場合、できるだけ絶対パスを使用する.PHPがincludeに行くことを避けるからだ.pathでファイルを検索する速度は、オペレーティングシステムのパスを解析するのにかかる時間が少なくなります.
9.スクリプトの実行を開始するタイミングを知りたい場合は、$_を使用します.SERVER[‘REQUEST_TIME’]はtime()より優れている.
10、関数は正規表現の代わりに同じ機能を完成する.
11、str_replace関数比preg_replace関数は速いがstrtr関数の効率はstr_replace関数の4倍.
注意:
定義と使用法
strtr()関数は、文字列内の特定の文字を変換します.
構文
strtr(string,from,to)

または
strtr(string,array)

パラメータ
説明
string1
必要です.変換する文字列を指定します.
from
配列を使用しない限り、必須です.変更する文字を指定します.
to
配列を使用しない限り、必須です.変更する文字を指定します.
array
必要です(fromとtoを使用しない限り).キーが元の文字で、値がターゲット文字の配列です.
説明
fromとtoの長さが異なる場合は、最短の長さにフォーマットされます.

例1
<?php
echo strtr("Hilla Warld","ia","eo");
?>

出力:
Hello World

例2
<?php
$arr = array("Hello" => "Hi", "world" => "earth");
echo strtr("Hello world",$arr);
?>

出力:
Hi earth

12、1つの文字列置換関数で、配列または文字をパラメータとして受け入れることができ、パラメータの長さがあまり長くない場合は、各伝達パラメータが1文字であり、1行のコードだけを書くのではなく、配列をクエリーおよび置換のパラメータとして受け入れるように、置換コードを追加することを考慮することができる.
13、選択分岐文(switch case)を使用するのは、複数のif、else if文を使用するよりも良い.
14、@でエラーメッセージをブロックする方法は非常に非効率で、極めて非効率です.
15、apacheのmod_を開くdeflateモジュールは、Webページの閲覧速度を向上させることができます.
注意:Apacheモジュールmod_deflate:モジュールはDEFLATE出力フィルタを提供し、サーバが出力コンテンツをクライアントに送信する前に圧縮して帯域幅を節約することを可能にする.
16、データベース接続使用済みの場合はオフにし、長い接続は使用しないでください.
17、エラーメッセージのコストが高い.
18、方法の中で局部変数を増加して、速度は最も速いです.関数でローカル変数を呼び出す速度にほぼ匹敵します.
19、グローバル変数を1つ増やすと、ローカル変数を1つ増やすより2倍遅くなります.
20、1つのオブジェクト属性($->thisprop++)を増やすと、1つのローカル変数を増やすよりも3倍遅くなります.
21、定義されていないローカル変数を1つ増やすと、定義されたローカル変数を1つ増やすよりも9~10倍遅くなります.
22、1つのローカル変数のみを定義し、関数で呼び出さないと、同じように速度が遅くなります(ローカル変数を1つ増やすことに相当します).PHPは大まかにグローバル変数が存在するかどうかをチェックします.
23、メソッド呼び出しはクラスで定義されたメソッドの数とは関係ありません.私は(テストメソッドの前と後に)10のメソッドを追加しましたが、パフォーマンスには変化がありません.
24、派生クラスのメソッドは、ベースクラスで定義された同じメソッドよりも速く実行されます.
25.パラメータを持つ空の関数を呼び出します.これは、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()テクニックを使用してコードの実行を加速することができます.
(例として以下のように)
if (strlen($foo) < 5) { echo “Foo is too short”$$ }
(次のテクニックと比較)
if (!isset($foo{5})) { echo “Foo is too short”$$ }
後者とは異なり、isset()は言語構造として機能検索やアルファベット小文字化を必要としないことを意味するため、isset()を呼び出すのはstrlen()よりもちょうど速い.つまり、実際には文字列の長さを検証する最上位コードにはあまりオーバーヘッドがかかりません.
34、変数$iの増加または減少が実行されると、$i++は++$iより若干遅くなる.この違いはPHP特有で、他の言語には適用されませんので、CやJavaコードを修正しないで、すぐに速くなることを期待してください.++$iより速いのは、3つの命令(opcodes)しか必要としないためであり、$i++は4つの命令を必要とする.後続のインクリメントは、実際には一時変数を生成し、この一時変数はその後インクリメントされます.前置増加はそのまま元の値に増加します.これはZendのPHPオプティマイザが行ったように最適化処理の一種である.この最適化処理は、すべての命令オプティマイザが同じ最適化処理を行うわけではなく、命令オプティマイザをアセンブリしていないインターネットサービスプロバイダ(ISPs)とサーバが多数存在するため、良いアイデアであることを覚えておいてください.
35、オブジェクト(OOP)に向かう必要はありません.オブジェクトに向かうにはオーバーヘッドがかかり、メソッドやオブジェクト呼び出しごとに多くのメモリが消費されます.
36、クラスですべてのデータ構造を実現するのではなく、配列も役に立ちます.
37、方法を細分化しすぎないで、本当に再利用したいコードをよく考えてみてください.
38、必要に応じて、コードを方法に分解することができます.
39、できるだけ大量のPHP内蔵関数を採用する.
40、コードに多くの時間のかかる関数がある場合は、C拡張で実現することを考慮することができます.
41、評価検査(profile)あなたのコード.検査器は、コードのどの部分がどれだけ時間を費やしたかを教えてくれます.Xdebugデバッガには検証プログラムが含まれており,評価検証は全体的にコードのボトルネックを示すことができる.
42、mod_zipはApacheモジュールとして、あなたのデータを即時に圧縮し、データ転送量を80%削減することができます.
43、file_が使えるget_contentsがfile、fopen、feof、fgetsなどのシリーズメソッドに代わる場合は、できるだけfile_get_contents、彼の効率がずっと高いから!でもfile_に注意get_contentsがURLファイルを開くときのPHPバージョンの問題;
44、できるだけファイルの操作を少なくして、PHPのファイルの操作効率も低くありませんが;
45、select SQL文を最適化し、可能な限りInsert、Update操作を少なくする(updateでは、私は悪批判されたことがある).
46、できるだけPHPの内部関数を使う(しかし私はPHPの中に存在しない関数を探すために、もともとカスタム関数を書くことができる時間を浪費して、経験の問題!);
47、ループ内部で変数を宣言しないでください.特に大きな変数:オブジェクト(これはPHPの中で注意しなければならない問題だけではないようですね?);
48、多次元配列はできるだけ入れ子を循環しないでください.
49、PHP内部文字列で関数を操作できる場合、正規表現は使用しない.
50、foreachは効率が高く、whileとforサイクルの代わりにforeachを使う.
51、二重引用符引用文字列を一重引用符で置換する.
52、「i=i+1の代わりにi+=1を用いる.c/c++の習慣に合致し、効率が高い」.
53、global変数に対して、使い終わったらunset()を落とすべきだ.