PHP DEFINE(原作者:CS,在此感谢CS同学的帮助)
DEFINE是大家常用的定义常量的方法,但是DEFINE是存在一定的性能问题的。虽然一般的项目中可能会觉得DEFINE也不会很多,影响不是很大。
但是,实际上,由于require的使用和嵌套等,会在不知不觉中引用到很多的DEFINE。 例如,公司某个最近发布的项目中,一个典型的页面会引用到接近400个DEFINE,使用APD进行profiling后会发现DEFINE消耗的CPU非常靠前。
我们进行了一些对比测试:准备了4个php文件
d1.php
d2.php
d3.php
s1.php
每个文件都是重复1000项,以使对比效果明显。
主程序分别requrie这四个文件,对比进行压力测试。对比测试的结果如下:
d2.php – QPS 1300 左右
d3.php – QPS 2500 左右
s1.php – QPS 3500 左右
结论:
很明显,DEFINE的性能是最差的,而且对比来看,是非常的差。 因此,建议在需要定义常量的地方,可以建立一个专门的常量类。
测试环境:
apache 2.0.59 php 5.2.1
HP DL360 XEON 3.0G*2 2G