パフォーマンスをインクルードします
コードをコピーします コードは次のとおりです:
include('include.php' );
コードをコピーします コードは次のとおりです。
include(realpath(dirname(_FILE_)).DIRECTORY_SEPARATOR.'include.php');
Copy Code コードは次のとおりです。
define('APP_PATH',realpath(dirname(_FILE_))));
Copy codeコードは次のとおりです:
include(APP_PATH.DIRECTORY_SEPARATOR.'models'.'User.php');
コードをコピー コードは次のとおりです。 >
# file:include1.php
include 'include2.php';
//@todo something#file:include2.php
//@todo something#file:script1. php
include 'include2.php';
//@todo something
#file:script2.php
include 'script1.php'; //@todo something
script1.php を実行するとき、'include2.php' を含めます。このコード行は 1 回実行されます。 script2.php を実行すると、このコード行が 2 回実行されます。
これは単なる例です。実際のプロジェクトでは、include2.php がさらに複数回インクルードされる場合があります。このようなインクルードの繰り返しはパフォーマンスに影響しますか?これをテストするスクリプトを書きました。
コードは次のとおりです。 #file:SimpleClass.php
class SimpleClass { パブリック関数 __construct() {
echo get_time() . "rn";
}
}
#file:php_include.php
for($i = 0;$i < $loop;$i ) {
include_once "SimpleClass.php";
new SimpleClass()
}
$loop 値が 1 の場合、 $loop が 1000 の場合、スクリプトには約 0.00018906593322754 秒かかります。
コードは次のとおりです: #file:php_autoload.php
function __autoload( $class_name ) {include_once $class_name . '.php';
}for($i = 0;$i new SimpleClass(); 🎜>}
このコードでは __autoload 関数を定義しましたが、$loop が 1 の場合は 0.0002131462097168 秒かかり、$loop が 1000 の場合は前のコードの 1/ だけかかります。 0.012391805648804秒。
しかし、文字列の行を出力する SimpleClass のコードに注目してください。この出力行を削除して比較すると、結果はどうなるでしょうか。
$loop が両方とも 1000 の場合、前者は 0.057836055755615 秒かかりますが、autoload を使用すると、0.00199294090271 秒しかかかりません。効率の差は約30倍!
上記のテストからわかるように、ファイルが 1 回だけインクルードされる場合、自動ロードには少し時間がかかりますが、ファイルが繰り返しインクルードされる場合、自動ロードを使用するとシステムのパフォーマンスが大幅に向上します。
プログラマーを解放するためにオートロードを使用するかどうかについては、見る人や賢明な人によって異なります。私の意見では、条件が許せば、開発をより便利にするためにこのパフォーマンスを犠牲にする価値があります (場合によってはパフォーマンスが向上する可能性もあります)。
include() および require() のパフォーマンス
include() の場合、include() が実行されるたびにファイルを読み取って評価する必要があります。
require() の場合、ファイルは 1 回だけ処理されます (実際、ファイルの内容が require() ステートメントを置き換えます)。
これは、これらの命令のいずれかを含むコードや複数回実行される可能性のあるコードがある場合は、require() を使用する方が効率的であることを意味します。
一方、コードが実行されるたびに異なるファイルを読み取る場合、または一連のファイルを反復処理するループがある場合は、 include() を使用します。
ファイルの名前を設定できるためです。含めたいパラメータが include() の場合に使用される変数。