私がそのようなコードを持っているなら
if($abc==true) {
//code code code
} else {
// other code, other code
}
では、「他のコード」はコンパイルされるのでしょうか$abc
。true
それで、パフォーマンスに関して「コード」のパフォーマンスがたくさんある場合、これは無関係ですか?
私がそのようなコードを持っているなら
if($abc==true) {
//code code code
} else {
// other code, other code
}
では、「他のコード」はコンパイルされるのでしょうか$abc
。true
それで、パフォーマンスに関して「コード」のパフォーマンスがたくさんある場合、これは無関係ですか?
PHPは、実行時に解析されます(したがって、「コンパイル」されます)。到達可能性に関係なく、すべてのコードが処理されます。例えば:
<?php
echo "Hello, World!";
exit;
DERP!!
?>
derpに到達できない場合でも、「Hello、World!」を出力するのではなく、解析エラーで失敗します。
はい、コンパイルされます(実際に読み取られ、トークン化され、解析されます)。$abc
PHPには、実行時にどのような値が想定されるかを知る方法がありません。
IF内でinclude()を使用することにより、負荷をいくらか減らすことができます(ただし、コードが本当に多い場合に限ります)。
if (condition)
{
include('true.php');
}
else
{
include('false.php');
}
ただし、この方法では、1つではなく2つのファイルをロードすることに注意してください。通常、余分なファイルのオーバーヘッドにより、ゲームは努力する価値がありません。
ただし、IFが実際に非常に多くのコードである場合は、それをいくつかのファイルに分割することは、保守的には良い考えかもしれません。プログラムフローからIFを削除するためのリファクタリングは、さらに優れています。
どのようなパフォーマンスの問題が懸念されますか?PHPはインタプリタ言語です。つまり、ファイルはすべてのリクエストで解析、トークン化、実行されます。構文エラーが何であれ、ファイル全体を解析してトークン化する必要があります。実行される内容は、例のifのように、制御フローステートメントによって異なります。
余分な解析が心配な場合は、制御フローステートメントの結果に基づいてコードをリファクタリングして別のファイルを含めることができます。
$x = 1;
if($x === 1) {
include_once './myFile.php';
}
else {
// Something Else.
}
パフォーマンスに関連する大きな理由を、なぜそうしたいのかということについては、私は本当に考えることはできませんが。
コード全体は実行時にエラーがないか「解析」されますが、コードのフローはその「if」ポイントで一方向にのみ進むため、基本的に速度パフォーマンスの問題はありません。
特に、「if」などのフロー制御ステートメントはおそらくプログラミングの最も重要な要素であるため、心配する価値はありません。本当に、それらなしではやっていけません。