PHP5 の自動読み込みの効率に関する問題

WBOY
リリース: 2016-06-13 13:33:46
オリジナル
827 人が閲覧しました

PHP5 の自動ロードの効率の問題
自動ロードはクラスが呼び出されたときです。ただし、明示的な require がない場合は、自動的にディレクトリに移動して、対応する PHP クラス ファイルを見つけます。
このクラスを複数の FUNCTION または複数のページで使用する場合、毎回ハードディスク上でこのファイルを検索するかどうかを尋ねたいです。これにより、ハードディスク IO のオーバーヘッドが増加しますか?
require_once が明示的に必要な場合、それは 1 回の IO のコストになります。プロジェクトを開発する際にどのように対処しているのでしょうか?

-----解決策---------
はい、このクラスが複数のページで使用されている場合、このファイルは毎回ハードディスク上で見つかりますか?
同様に、require_once が明示的に要求されている場合、このファイルは毎回ハードディスク上で見つかります

したがって、これらの頻繁にロードされるファイルをキャッシュするために使用される拡張ライブラリがいくつかあります。
------解決策------------------
オートロード機構により、PHP プログラムは最初からすべてのクラス ファイルを組み込むのではなく、クラスが使用される場合にのみクラス ファイルを自動的に組み込むことができます。この機構は遅延ロードとも呼ばれます。
通常、PHP5 がクラスを使用するときに、そのクラスがロードされていないことが判明すると、自動的に __autoload() 関数が実行され、使用する必要があるクラスをロードできます。
オートロード メカニズムを使用するとき、多くの人が最初に抱く反応は、オートロードを使用するとシステムの効率が低下するというもので、効率性のためにオートロードを使用しないことを提案する人もいます。オートロード実装の原理を理解すると、オートロード メカニズム自体がシステム効率に影響を与える理由ではないことがわかります。これにより、不要なクラスがシステムにロードされなくなるため、システム効率が向上する可能性さえあります ()。
では、なぜ多くの人は自動ロードを使用するとシステム効率が低下するという印象を抱くのでしょうか?実際、オートロード メカニズム自体の効率に影響を与えるのは、まさにユーザーが設計したオートロード機能です。クラス名を実際のディスク ファイルと効率的に一致させることができない場合 (これはファイル名だけでなく実際のディスク ファイルを指すことに注意してください)、システムは多くのファイル存在チェックを実行する必要があります (各インクルード パスをチェックする必要があります)。 ) に含まれるパスを検索し、ファイルが存在するかどうかを判断するにはディスク I/O 操作が必要です。ご存知のとおり、ディスク I/O 操作の効率は非常に低いため、これが自動ロードの効率を低下させる原因となります。
したがって、システムを設計するときは、クラス名を実際のディスク ファイルにマッピングするための明確なメカニズムを定義する必要があります。このルールが単純かつ明確であればあるほど、自動ロード メカニズムはより効率的になります。
結論: 自動ロード メカニズムは本来非効率的ではありません。自動ロード機能の乱用と不適切に設計された自動ロード機能のみが効率の低下につながります。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!