include性能 复制代码 代码如下:
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()则返回其父文件夹路径。
另外一个更查找效率高,并且书写简单的方式是include('./include.php'),这相当于告诉系统查找当前路径下的'include.php'文件。
在大型系统中我们常常使用另外一个更好的方式,我们常常在路由文件或其他初始化文件中加入如下代码:
复制代码 代码如下:
define('APP_PATH',realpath(dirname(_FILE_)));
这相当于给系统添加了一个全局变量来指出系统根目录,当我们后面需要引用某具体路径下的文件时我们就可以使用如下代码了:
复制代码 代码如下:
include(APP_PATH.DIRECTORY_SEPARATOR.'models'.'User.php');
autoload与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
当执行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()时使用这个变量。
相关推荐:
WPJVX:开启数字化未来的智慧平台,关键词排名技术咨询乐云seo
为什么做seo矩阵项目,为什么做seo矩阵项目不能做 ,怎么用ai写作
AI写作的崛起-“只能AI写作”背后的巨大潜力,舞狮摄影ai
为什么选择老域名注册,打造品牌价值的秘密武器,网站建设服务费用多少
为什么seo这么麻烦,seo是什么意思 为什么要做seo ,dota1ai地图命令选ai
什么是seo网络推广,seo网络推广技术 ,ai写真官方
SEO差价如何用SEO优化帮助企业实现成本与效益的完美平衡,盐城seo收费贵吗
SEO分类:从基础到进阶,全面解析SEO优化的关键要素,新建设网站排名
SEO优化是做什么的?让你的网站流量飙升的秘密武器,乳腺癌ai作用机理
SEO职责:为网站注入流量,提升品牌竞争力,拼多多女装关键词排名
ChatGPT页面无法翻阅?带你深度了解背后的原因与解决方案,pdf怎么转换ai文字
SEO关键词利器:如何借助精准关键词提升网站流量与排名,ai绘画客户
AI网站开发与代码创新:引领未来数字化变革的关键,ai ay规则
为什么要做seo si,为什么要做* ,ai里面怎么扣二维码
ChatGPTApp怎么调大字体?提升阅读体验,让文字更清晰,推荐ai音频
为什么行业都要做seo,为什么要做seo ,ai明信片
SEO搜索关键词是什么意思?全方位解析关键词优化的核心要素,lol ai图片
用AI写一篇文章,如何提升你的写作效率与创意
seo项目是什么,seo是啥 ,ai ued
ChatGPT连了外网也登不了?如何解决这一问题,重新畅享AI助力!,ai少女大瓜
SEO在广告领域的深度解析:如何利用SEO提升广告效果,网文写作ai工具
SEO与SEM策略:提升网站流量与品牌曝光的双剑合璧,ai补图
SEO优化顾问:让您的网站脱颖而出的秘密武器,ai ps 群
“曝光量扩大,助力品牌腾飞的秘密武器”,盐山网站优化免费咨询
SEO地位:如何提升你的网站排名与曝光度,抢占市场先机,微营销网络推广
SEO调整,助力网站流量爆发式增长!,江都seo优化排名
如何识别文章是否由AI写作:技巧与方法解析
SEO提供:如何通过精准的SEO策略提升网站流量与品牌影响力,刷关键词排名立的火星
SEO领先-如何借助SEO技术让您的网站脱颖而出,seo是黑客吗
SEO建议:如何通过优化提升网站流量,赢得市场竞争,自媒体网站免费推广平台
AI工具,让工作效率翻倍:AI工具教程全面解析
SEO要素:优化网站排名的关键因素全解析,棒球大联盟营销推广文案
AI免费文章解读:智能写作新篇章,小店AI
用AI写文章:效率与创意的完美结合
ChatGPT页面无法访问?解决方案,让你轻松摆脱困扰!,ai染发颜色
ChatGPT页面空白无法登录?如何解决这一困扰?,温州ai字幕生成
什么是seo快排,seo快排方案 ,ai剪图形
seo需要什么人员,seo需要什么技能 ,画大学ai
AI+写文章:开启智能创作新时代
SEO优化基础:让你的网站脱颖而出的秘密武器,模仿猫ai
ChatGPTWindows版本下载:让AI助力您的工作和生活,ai yamama
ChatGPTO1免费:突破智能聊天的极限,体验AI无限可能,糯米ai唱歌
SEO爱站:提升网站排名,赢得流量的秘密武器,优化网站设计价格多少
SEO已经成为数字营销的核心,如何利用SEO提升网站流量和转化率,含山网站优化推广
SEO网络营销:如何通过精准优化提升品牌价值,青州建设网站电话
seo要寻找什么资源,怎么找seo ,ai插画描边
SEO快速排名实例:如何通过实战技巧提升网站排名,快速突破流量瓶颈,安徽ai跑步机企业
ChatGPT充值打不开?这几招教你轻松解决问题!,免费的ai写作绘图
seo网站是什么找行者SEO,seo分析网站 ,ai图文梅花
什么是SEO可以自学吗,seo零基础可以自学吗 ,ai1紫