最終的には、型宣言を追加するときにパフォーマンスが問題になることはありません。これらは、通訳者ではなくプログラマーの人生を楽にするために存在します。彼らがあなたに役立つと思うなら、それらを使用してください。型宣言を使用するかどうかは、コードのパフォーマンスの主な決定要因になる可能性は低いです。
現在、(PHP 7.0)型宣言を使用すると、実際には小さなパフォーマンスペナルティがあります。PHPは、渡した値の型を関数でチェックする必要があるためです。チェックしないほうが速いですが、型宣言がないとどうなりますか?
しかし、これより少し微妙なもので、状況は変化しています。あなたは厳密な型指定を使用している場合
厳密な型指定力あなたが正しい種類
を渡すために、あなたが理想型(例えばint型)の値を渡す必要があり、むしろ(他のいくつかのタイプを渡すことができることよりもあなたのためにPHPを変換してください。正しい型を渡す方が、PHPを他の型から変換するよりも速くなります。型変換には時間がかかります。
型宣言は、厳密な型指定を持つかどうか、あなたは通常、同じ値の繰り返し型変換を避けるため、型変換に
あなたは型宣言を使用する場合は
を繰り返して回避することができます。
通常、いくつかの数値演算を行う関数があり、文字列引数を渡すと、PHPは演算を行うたびに適切な数値型(intまたはfloat)に変換する必要があります。
しかし、その引数に型宣言がある場合、自動的に(弱い型指定モード)または明示的に変換されたために1回のみ変換されます。
型宣言は、型チェックをElideのためにPHPを有効
型宣言は、それが時にはそれがそうでない場合は関係しているタイプのチェックを回避するために使用することができ、あなたのPHPランタイムの保証を与えます。 PHPは最初$b
と$c
それは実際にそれらを掛けることができる前に内部の型チェックを行う必要があり、型宣言なし
$a = $b * $c;
;:たとえば、次のコード行を取りますPHPは両方とも数値型であることを確認し、そうでなければ変換し、適切なタイプの乗算を実行する必要があります(int
x int
、float
xなど)。
$b
と$c
の型を事前に宣言しておけば、PHPはここでそれらをチェックする必要はなく、実際の乗算をすぐに行うことができます。それはより速いです。これは、関数内でこれらの変数を使用して複数の操作を行う場合に特に当てはまります。
この最適化は、OPcacheを使用する際にPHP 7.1で実装されています。
同様の最適化を実装して、引数と戻り値の型チェックも取り除くことができます。たとえば、ある関数がパラメータをintと宣言している場合、その引数をintを必要とする別の関数に渡すと、その型を再度確認する必要はありません。現在、PHP 7.1では、不要な戻り値型チェック(OPcacheを使用する場合はさらに多く)を削除できますが、引数型チェックは行われません。
これらのタイプの最適化のために、型宣言を持つコードのパフォーマンスの低下はますます小さくなっており、型宣言を持つコードは今後のコードより速くなる可能性があります。
ヒントの大部分は、プログラマのためのヘルプ*です。適切なツール(インテリジェントIDE、静的型チェッカー)を使用すると、コードが実行される前にエラーのクラス全体を回避できます。 PHPは通常、あらかじめコンパイルされているわけではないので、静的コンパイラーほどパフォーマンスは向上しません。 – deceze