ホームページ php教程 php手册 PHP の自動ロードとインクルードのパフォーマンスの比較

PHP の自動ロードとインクルードのパフォーマンスの比較

Jun 21, 2016 am 08:57 AM
autoload include php

PHP5 以降、オブジェクト指向の公式サポートが大幅に強化されました。重要な変更があります。__autoload() 関数が導入されました。今後は、大量の require や include を記述する必要がなくなりました。 PHP スクリプトのヘッダーを使用する 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 'include1.php'; 
include 'script1.php' 
//@todo something
ログイン後にコピー
script1.php が実行されると、

include 'include2.php'; このコード行は 1 回実行されます。 script2.php を実行すると、このコード行が 2 回実行されます。

これは単なる例です。実際のプロジェクトでは、include2.php がさらに複数回インクルードされる場合があります。このようなインクルードの繰り返しはパフォーマンスに影響しますか?これをテストするスクリプトを書きました。

#file:SimpleClass.php
class SimpleClass {
        public function __construct() {
                echo get_time() . "\r\n";
        }
}
ログイン後にコピー

#file:php_include.php
for($i  = 0;$i < $loop;$i++) {
        include_once "SimpleClass.php";
        new SimpleClass();
}
ログイン後にコピー
$loop 値が 1 の場合、スクリプトには約 0.00018906593322754 秒かかります。$loop が 1000 の場合、スクリプトには約 0.076701879501343 秒かかります。

自動ロードを使用して実装したらどうなるでしょうか?

#file:php_autoload.php
function __autoload($class_name) {
        include_once $class_name . '.php';
}
 
for($i  = 0;$i < $loop;$i++) {
        new SimpleClass();
}
ログイン後にコピー
このコードでは __autoload 関数を定義しましたが、$loop が 1 の場合は 0.0002131462097168 秒かかり、$loop が 1000 の場合は前のコードの 1/ だけかかります。 0.012391805648804秒。

しかし、文字列の行を出力する SimpleClass のコードに注目してください。この出力行を削除して比較すると、結果はどうなるでしょうか。

$loop が両方とも 1000 の場合、前者は 0.057836055755615 秒かかりますが、autoload を使用すると、0.00199294090271 秒しかかかりません。効率の差は約30倍!

上記のテストからわかるように、ファイルが 1 回だけインクルードされる場合、自動ロードには少し時間がかかりますが、ファイルが繰り返しインクルードされる場合、自動ロードを使用するとシステムのパフォーマンスが大幅に向上します。

プログラマーを解放するためにオートロードを使用するかどうかについては、見る人や賢明な人によって異なります。私の意見では、条件が許せば、開発をより便利にするためにこのパフォーマンスを犠牲にする価値があります (場合によっては、パフォーマンスが向上する可能性もあります)。



このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

CakePHP の日付と時刻 CakePHP の日付と時刻 Sep 10, 2024 pm 05:27 PM

Cakephp4 で日付と時刻を操作するには、利用可能な FrozenTime クラスを利用します。

CakePHP ファイルのアップロード CakePHP ファイルのアップロード Sep 10, 2024 pm 05:27 PM

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP について話し合う CakePHP について話し合う Sep 10, 2024 pm 05:28 PM

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

CakePHP バリデータの作成 CakePHP バリデータの作成 Sep 10, 2024 pm 05:26 PM

Validator は、コントローラーに次の 2 行を追加することで作成できます。

CakePHP のロギング CakePHP のロギング Sep 10, 2024 pm 05:26 PM

CakePHP へのログインは非常に簡単な作業です。使用する関数は 1 つだけです。 cronjob などのバックグラウンド プロセスのエラー、例外、ユーザー アクティビティ、ユーザーが実行したアクションをログに記録できます。 CakePHP でのデータのログ記録は簡単です。 log()関数が提供されています

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 Dec 20, 2024 am 11:31 AM

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

CakePHP クイックガイド CakePHP クイックガイド Sep 10, 2024 pm 05:27 PM

CakePHP はオープンソースの MVC フレームワークです。これにより、アプリケーションの開発、展開、保守がはるかに簡単になります。 CakePHP には、最も一般的なタスクの過負荷を軽減するためのライブラリが多数あります。

See all articles