パフォーマンスをインクルードします
コードをコピーします コードは次のとおりです:
include('include.php' );
もちろん、この方法に問題はありませんが、次の方法よりも若干効率が劣ります:
コードをコピーします コードは次のとおりです。
include(realpath(dirname(_FILE_)).DIRECTORY_SEPARATOR.'include.php');
この方法ではさらに入力する必要があるかもしれませんが、PHP エンジンが include_path を反復処理して「include.php」という名前のすべての名前を検索して対応するオブジェクトを見つける必要がある前の方法と比較して、dirname の絶対パス(__FILE__) を指定すると、システムは対応するファイルを迅速に見つけることができます。
PHP の定数 __FILE__ は、実際には C# の AppDomain.CurrentDomain.BaseDirectory に非常によく似ており、現在実行されているコードが配置されているファイルの絶対パスを返します。関数 dirname() は、その親フォルダーのパスを返します。
もう 1 つのより効率的で簡単な記述方法は include('./include.php') です。これは、現在のパスで 'include.php' ファイルを見つけるようにシステムに指示するのと同じです。
大規模なシステムでは、別のより良い方法を使用して、ルーティング ファイルやその他の初期化ファイルに次のコードを追加することがよくあります:
Copy Code コードは次のとおりです。
define('APP_PATH',realpath(dirname(_FILE_))));
これは、 system グローバル変数は、システムのルート ディレクトリを指します。後で特定のパスにあるファイルを参照する必要がある場合は、次のコードを使用できます:
Copy codeコードは次のとおりです:
include(APP_PATH.DIRECTORY_SEPARATOR.'models'.'User.php');
オートロードとインクルードのパフォーマンスの比較
たとえば、次の 4 つのスクリプトがあります。
コードをコピー コードは次のとおりです。 >
# 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 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() の場合に使用される変数。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

Safe Exam Browser
Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

ドリームウィーバー CS6
ビジュアル Web 開発ツール
