search
HomeBackend DevelopmentPHP TutorialDetailed explanation of inlcude() performance comparison in php_PHP tutorial

Detailed explanation of inlcude() performance comparison in php_PHP tutorial

Jul 13, 2016 am 10:56 AM
oncephprequirefunctionComparedperformanceuseprogrammerDetailed explanation

The two most commonly used functions by PHP programmers are require_once and include. Through these two functions, we can use objects such as classes defined in other class libraries. But many people simply use the following code to reference files when including other files in the same directory:

include performance

The code is as follows Copy code
 代码如下 复制代码

include('include.php');

include('include.php');

Of course there is nothing wrong with this method, but it is slightly less efficient than the following method:
 代码如下 复制代码

include(realpath(dirname(_FILE_)).DIRECTORY_SEPARATOR.'include.php');

The code is as follows Copy code

include(realpath(dirname(_FILE_)).DIRECTORY_SEPARATOR.'include.php');

In this way we may need to input more, but compared to the previous method which requires the PHP engine to iterate through include_path to find all the names named 'include.php' to find the corresponding object, dirname(__FILE__) Specifying the absolute path will allow the system to quickly locate the corresponding file.

The constant __FILE__ in PHP is actually very similar to AppDomain.CurrentDomain.BaseDirectory in C#. It returns the absolute path of the file where the code currently being executed is located. The function dirname() returns its parent folder path.

Another more efficient and simple way to write is include('./include.php'), which is equivalent to telling the system to find the 'include.php' file in the current path.

 代码如下 复制代码

define('APP_PATH',realpath(dirname(_FILE_)));

In large systems we often use another better way. We often add the following code to routing files or other initialization files:

The code is as follows Copy code
define('APP_PATH',realpath(dirname(_FILE_)));
 代码如下 复制代码

include(APP_PATH.DIRECTORY_SEPARATOR.'models'.'User.php');

This is equivalent to adding a global variable to the system to point out the system root directory. When we need to reference a file in a specific path later, we can use the following code:

The code is as follows Copy code
include(APP_PATH.DIRECTORY_SEPARATOR.'models'.'User.php');

Performance comparison between autoload and include
 代码如下 复制代码
#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
For example, there are the following four scripts:
The code is as follows Copy code
#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’; 这行代码被执行了一次。而执行script2.php时,这行代码被执行了两次。
这里只是一个简单的例子,在实际的项目中,include2.php被include的次数可能更多。这样反复的include,是否会影响性能呢?为此我写了个脚本来测试。

 代码如下 复制代码

#file:SimpleClass.php
class SimpleClass {
        public function __construct() {
                echo get_time() . "rn";
        }
}

#file:php_include.php
for($i  = 0;$i < $loop;$i++) {
        include_once "SimpleClass.php";
        new SimpleClass();
}

当$loop值为1时,脚本耗时约0.00018906593322754秒,当$loop为1000时,脚本耗时约0.076701879501343秒。
如果我们用autoload实现呢?

 代码如下 复制代码

#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/7,0.012391805648804秒。
但请注意看SimpleClass的代码,其中输出了一行字符串,如果去掉这行输出后再比较,会是什么样的结果呢?
在$loop同为1000的情况下,前者耗时0.057836055755615秒,而使用了autoload后,仅仅0.00199294090271秒!效率相差近30倍!
从上面的测试可以看出,当文件仅仅被include一次,autoload会消耗稍微多一点的时间,但如果在文件被反复include的情况下,使用autoload则能大大提高系统性能。
至于是否要使用autoload来解放程序员,这就仁者见仁,智者见智了。在我看来,条件允许的前提下,牺牲这一点性能(某些情况下,甚至可能是提升性能)更为便捷的开发,是值得的。


include()和require()性能


对include()来说,在 include()执行时文件每次都要进行读取和评估;

而对于require()来说,文件只处理一次(实际上,文件内容替换了require()语句)。

这就意味着如果有包含这些指令之一的代码和可能执行多次的代码,则使用require()效率比较高。

另一方面,如果每次执行代码时相读取不同的文件,或者有通过一组文件叠代的循环,就使用include(),

因为可以给想要包括的文件名设置一个变量,当参数为include()时使用这个变量。

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/632183.htmlTechArticlePHP程序员最常用的两个函数莫过于require_once和include了,通过这两个函数,我们可以使用其他类库中定义的类等对象。但很多人在使用包含相...
Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Explain the concept of a PHP session in simple terms.Explain the concept of a PHP session in simple terms.Apr 26, 2025 am 12:09 AM

PHPsessionstrackuserdataacrossmultiplepagerequestsusingauniqueIDstoredinacookie.Here'showtomanagethemeffectively:1)Startasessionwithsession_start()andstoredatain$_SESSION.2)RegeneratethesessionIDafterloginwithsession_regenerate_id(true)topreventsessi

How do you loop through all the values stored in a PHP session?How do you loop through all the values stored in a PHP session?Apr 26, 2025 am 12:06 AM

In PHP, iterating through session data can be achieved through the following steps: 1. Start the session using session_start(). 2. Iterate through foreach loop through all key-value pairs in the $_SESSION array. 3. When processing complex data structures, use is_array() or is_object() functions and use print_r() to output detailed information. 4. When optimizing traversal, paging can be used to avoid processing large amounts of data at one time. This will help you manage and use PHP session data more efficiently in your actual project.

Explain how to use sessions for user authentication.Explain how to use sessions for user authentication.Apr 26, 2025 am 12:04 AM

The session realizes user authentication through the server-side state management mechanism. 1) Session creation and generation of unique IDs, 2) IDs are passed through cookies, 3) Server stores and accesses session data through IDs, 4) User authentication and status management are realized, improving application security and user experience.

Give an example of how to store a user's name in a PHP session.Give an example of how to store a user's name in a PHP session.Apr 26, 2025 am 12:03 AM

Tostoreauser'snameinaPHPsession,startthesessionwithsession_start(),thenassignthenameto$_SESSION['username'].1)Usesession_start()toinitializethesession.2)Assigntheuser'snameto$_SESSION['username'].Thisallowsyoutoaccessthenameacrossmultiplepages,enhanc

What are some common problems that can cause PHP sessions to fail?What are some common problems that can cause PHP sessions to fail?Apr 25, 2025 am 12:16 AM

Reasons for PHPSession failure include configuration errors, cookie issues, and session expiration. 1. Configuration error: Check and set the correct session.save_path. 2.Cookie problem: Make sure the cookie is set correctly. 3.Session expires: Adjust session.gc_maxlifetime value to extend session time.

How do you debug session-related issues in PHP?How do you debug session-related issues in PHP?Apr 25, 2025 am 12:12 AM

Methods to debug session problems in PHP include: 1. Check whether the session is started correctly; 2. Verify the delivery of the session ID; 3. Check the storage and reading of session data; 4. Check the server configuration. By outputting session ID and data, viewing session file content, etc., you can effectively diagnose and solve session-related problems.

What happens if session_start() is called multiple times?What happens if session_start() is called multiple times?Apr 25, 2025 am 12:06 AM

Multiple calls to session_start() will result in warning messages and possible data overwrites. 1) PHP will issue a warning, prompting that the session has been started. 2) It may cause unexpected overwriting of session data. 3) Use session_status() to check the session status to avoid repeated calls.

How do you configure the session lifetime in PHP?How do you configure the session lifetime in PHP?Apr 25, 2025 am 12:05 AM

Configuring the session lifecycle in PHP can be achieved by setting session.gc_maxlifetime and session.cookie_lifetime. 1) session.gc_maxlifetime controls the survival time of server-side session data, 2) session.cookie_lifetime controls the life cycle of client cookies. When set to 0, the cookie expires when the browser is closed.

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

VSCode Windows 64-bit Download

VSCode Windows 64-bit Download

A free and powerful IDE editor launched by Microsoft

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

This project is in the process of being migrated to osdn.net/projects/mingw, you can continue to follow us there. MinGW: A native Windows port of the GNU Compiler Collection (GCC), freely distributable import libraries and header files for building native Windows applications; includes extensions to the MSVC runtime to support C99 functionality. All MinGW software can run on 64-bit Windows platforms.

EditPlus Chinese cracked version

EditPlus Chinese cracked version

Small size, syntax highlighting, does not support code prompt function

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Integrate Eclipse with SAP NetWeaver application server.

Dreamweaver Mac version

Dreamweaver Mac version

Visual web development tools