文章来源:
100素材网
更新时间:
2014-08-03 19:46:14
php include php include的用法 php include require 区别 php引用php
include性能
include('include.php'); include(realpath(dirname(_FILE_)).DIRECTORY_SEPARATOR.'include.php'); 这种方式我们可能需要输入更多一些,但相对于前面那种需要PHP引擎去include_path 中迭代查找所有名称为'include.php'才能查找到相应对象来说,dirname(__FILE__)这种绝对路径的指定会让系统迅速定位到相应文件。
另外一个更查找效率高,并且书写简单的方式是include('./include.php'),这相当于告诉系统查找当前路径下的'include.php'文件。 在大型系统中我们常常使用另外一个更好的方式,我们常常在路由文件或其他初始化文件中加入如下代码: define('APP_PATH',realpath(dirname(_FILE_))); 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 'include1.php'; include 'script1.php' //@todo something 这里只是一个简单的例子,在实际的项目中,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(); } 如果我们用autoload实现呢? #file:php_autoload.php function __autoload($class_name) { include_once $class_name . '.php'; }for($i = 0;$i < $loop;$i++) { new SimpleClass(); } 但请注意看SimpleClass的代码,其中输出了一行字符串,如果去掉这行输出后再比较,会是什么样的结果呢? 在$loop同为1000的情况下,前者耗时0.057836055755615秒,而使用了autoload后,仅仅0.00199294090271秒!效率相差近30倍! 从上面的测试可以看出,当文件仅仅被include一次,autoload会消耗稍微多一点的时间,但如果在文件被反复include的情况下,使用autoload则能大大提高系统性能。 至于是否要使用autoload来解放程序员,这就仁者见仁,智者见智了。在我看来,条件允许的前提下,牺牲这一点性能(某些情况下,甚至可能是提升性能)更为便捷的开发,是值得的。 include()和require()性能 对include()来说,在 include()执行时文件每次都要进行读取和评估; 而对于require()来说,文件只处理一次(实际上,文件内容替换了require()语句)。 这就意味着如果有包含这些指令之一的代码和可能执行多次的代码,则使用require()效率比较高。 另一方面,如果每次执行代码时相读取不同的文件,或者有通过一组文件叠代的循环,就使用include(), 因为可以给想要包括的文件名设置一个变量,当参数为include()时使用这个变量。 |
浏览次数次
上一篇文章: PHP 面向对象详解