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

  作者:bea

介绍 对于php性能问题,议论最多的就是__autoload()方法,很多人提到这个方法非常影响性能。还有人说opcode也能影响到__autoload()方法,所以针对这两点我做了个测试。 最终发现__autoload方法在性能方面的影响不是很大的。 环境 PHP:5.3.9 ——以fastcgi模式启动 Nginx:1.1.12 eaccelerator:0.9.6.1 。 最终发现__autoload方法在性能方面的影响不是很大的。 环境
介绍



对于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倍多。



有用  |  无用

猜你喜欢