PHP __autoload()方法真的影响性能吗?_php技巧

介绍

对于php性能问题,议论最多的就是__autoload()方法,很多人提到这个方法非常影响性能。还有人说opcode也能影响到__autoload()方法,所以针对这两点我做了个测试。
最终发现__autoload方法在性能方面的影响不是很大的。

环境

PHP:5.3.9 ——以fastcgi模式启动
Nginx:1.1.12
eaccelerator:0.9.6.1

 

最终发现__autoload方法在性能方面的影响不是很大的。

 环境

 

 PHP:5.3.9 ——以fastcgi模式启动

 Nginx:1.1.12

 eaccelerator:0.9.6.1

 

截图:

 启动界面:

 eAccelerator(在php.ini文件中)配置情况:

  文件结构:(每一个Test文件都是6000多行代码的文件)

 测试:带着eAccelerator缓存进行测试

 

测试代码:经过__autoload加载

 

       图1

我在浏览器里通过刷新得到的结果分别如下:

Total Time:0.10401391983032

Total Time:0.10252094268799

Total Time:0.095267057418823

Total Time:0.10013008117676

Total Time:0.096842050552368

Total Time:0.097998142242432

Total Time:0.10348510742188

Total Time:0.096648931503296

 

测试:不经过__autoload()

                         图2

测试结果——通过刷浏览器

Total Time:0.10309100151062

Total Time:0.10285210609436

Total Time:0.10154414176941

Total Time:0.097845792770386

Total Time:0.099545001983643

Total Time:0.10166597366333

 

最终看到的结果:autoload方法没有出现明显的性能下降

 

 测试:取消eAccelerator缓存进行测试

 

 图1的测试结果

Total Time:0.24992394447327

Total Time:0.25681900978088

Total Time:0.25327301025391

Total Time:0.22580695152283

Total Time:0.22656512260437

Total Time:0.22530484199524

Total Time:0.23080611228943

 

 图2的测试结果

Total Time:0.23054909706116

Total Time:0.22633790969849

Total Time:0.23442888259888

Total Time:0.2350070476532

Total Time:0.22897601127625

Total Time:0.23207712173462

 __autoload()方法在性能上还是没有明显的影响。

 总结

 

通过上面的两组实验得出:

1>__autoload方法没有明显的性能损失。所以大家不要介于使用__autoload方法。

2>opcode对代码的影响是比较大的,明显使用opcode的时候,php代码执行速度提高了将近2倍多。

时间: 2024-08-30 16:24:27

PHP __autoload()方法真的影响性能吗?_php技巧的相关文章

php中使用in_array() foreach array_search() 查找数组是否包含时的性能对比_php技巧

判断某字符是否包含与某于数组中,方法有很多,刚学习php的新手们估计偏向于使用循环来解决,对于一般的小网站来说,这种解决方案是不会出现什么大问题的.但就性能来说,这种方法不是最好的方法,下面笔者就 foreach,in_array() array_search 这三种方法来比较这三种方法在性能表现上的差异. <?php $runtime= new runtime; $runtime->start(); $a = 'k'; $b = array('a','b','c','d','e','f','

PHP SPL使用方法和他的威力_php技巧

SPL,PHP 标准库(Standard PHP Library) ,此从 PHP 5.0 起内置的组件和接口,并且从 PHP5.3 已逐渐的成熟.SPL 其实在所有的 PHP5 开发环境中被内置,同时无需任何设置.似乎众多的 PHP 开发人员基本没有使用它,甚至闻所未闻.究其原因,可以追述到它那阳春白雪般的说明文档,使你忽略了「它的存在」.SPL 这块宝石犹如铁达尼的「海洋之心」般,被沉入海底.而现在它应该被我们捞起,并将它穿戴在应有的位置 ,而这也是这篇文章所要表述的观点.那么,SPL 提供

那些年我们错过的魔术方法(Magic Methods)_php技巧

PHP 对象的一个优势是可以使用魔术方法,这些方法可以不需要修改外部代码而重写一个类的默认行为,这使得PHP 语法有更少的冗余性和更具有扩展性.这些方法很好识别,他们都是以双下划线(__)开始的.比如: __construct(),__destruct(),__call(),__callStatic(),__get(),__set(),__isset(),__unset(),__sleep(),__wakeup(),__toString(),__invoke(),__set_state() 和

php项目打包方法第1/2页_php技巧

企业网站好说,至少需要个虚拟主机什么的:可是OA,财务--这些内部系统就不好说了,总不能把代码和数据库扔给人家,写个说明,让他们自己照着说明去配置环境,安装代码吧.这样显然不像话,要知道隔行如隔山啊!再者,万一客户离自己呆的地方十万八千里,总不能过去给人安装吧,这样估计所有收入都挡不住这一来一往的车费的.所以把WAMP环境+PHP程序+维护安装卸载程序打成EXE安装包就很有必要.要让客户安装PHP程序就像安装QQ一样简单,方便! 方法应该有N多种.我所知道的只有三种. 用RAR的自动解压缩功能.

PHPWind与Discuz截取字符函数substrs与cutstr性能比较_php技巧

以掌握使用Benchmark_Iterate类工具的方法. 目录 一,什么是PEAR与Benchmark 二,性能比较代码准备与调试 三,性能比较测试结果 四,性能比较测试总结 五,附性能比较源代码下载 一,什么是PEAR与Benchmark 请参考PHP性能优化系列 第二期 PHP性能优化工具篇Benchmark类调试执行时间 第一期 PHP性能优化准备篇图解PEAR安装 二,性能比较代码准备与调试 测试环境说明 操作系统:Windows xp Service Pack 3 PHP版本:PHP

php面向对象中static静态属性与方法的内存位置分析_php技巧

本文实例分析了php面向对象中static静态属性与方法的内存位置.分享给大家供大家参考.具体如下: static静态属性的内存位置-->类,而不是对象.下面做测试来证明一下 <?php header("content-type:text/html;charset=utf-8"); class Human{ static public $name = "小妹"; public $height; public function tell(){ } } ec

php addslashes及其他清除空格的方法是不安全的_php技巧

清除空格的方法是不安全的,部分原因是因为字符中的空格非常多,例如 "addslashes的问题在 于黑客 可以用0xbf27来代替单引号,而addslashes只是将0xbf27修改为0xbf5c27,成为一个有效的多字节字符,其中的0xbf5c仍会 被看作是单引号,所以addslashes无法成功拦截." 最好是按照具体的参数需求校验确定是 int 等不是,外加数据库的参数操作方法.其实这个是数据库的 sql 问题,应该从源头数据库本身来解决,只不过有些数据库滑提供相应的方法罢了.

PHP框架性能测试报告_php技巧

作为一个PHP开发者,而且是初创企业团队的技术开发者,选择开发框架是个很艰难的事情. 用ThinkPHP的话,招聘一个刚从培训机构出来的开发者就可以上手了,但是性能和后期代码解耦是个让人头疼的事情.不过很多第三方功能不需要自己写,众多大牛已经给铺好路了. 用Laravel的话,传说写起来很爽扩展性也够,但是学习成本有点高,总不能给初级开发者半个月的时间去学习框架吧.而且据说江湖人士透漏,Laravel性能不怎么样,文档也并不是特别丰富. 用Yii的话,语法有点啰嗦,前后端代码分离有点小麻烦,不过

PHP互换两个变量值的方法(不用第三变量)_php技巧

前言 今天在这里我们就来看看,在PHP中如何在不使用第三变量的情况下,达到交换两个变量值得目的.详细的解说见代码注释,下面来一起看看吧. 一.substr() && strlen() 代码: <?php /** * 双方变量为字符串时,可用交换方法一 * 使用substr()结合strlen()两个方法达到交换变量值得目的 */ $a = "This is A"; // a变量原始值 $b = "This is B"; // b变量原始值 ec