PHP 性能优化(一)

PHP DEFINE(原作者:CS,在此感谢CS同学的帮助)

DEFINE是大家常用的定义常量的方法,但是DEFINE是存在一定的性能问题的。虽然一般的项目中可能会觉得DEFINE也不会很多,影响不是很大。

但是,实际上,由于require的使用和嵌套等,会在不知不觉中引用到很多的DEFINE。 例如,公司某个最近发布的项目中,一个典型的页面会引用到接近400个DEFINE,使用APD进行profiling后会发现DEFINE消耗的CPU非常靠前。

我们进行了一些对比测试:准备了4个php文件

d1.php

<?php
define('D1', 1);
define('D2', 2);
define('D3', 3);
...
?>

d2.php

<?php
class d2
{
var $d1 = 1;
var $d2 = 2;
var $d3 = 3;
...
}
?>

d3.php

<?php
class d3
{
const d1 = 1;
const d2 = 2;
const d3 = 3;
...
}
?>

s1.php

<?php
$i = 0;
$i += 1;
$i += 1;
$i += 1;
...
?>

每个文件都是重复1000项,以使对比效果明显。

主程序分别requrie这四个文件,对比进行压力测试。对比测试的结果如下:

d1.php - QPS 1050 左右
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

Post a comment

Google

Google
LAMP-Linux-redhat LAMP-Apache LAMP-MySQL LAMP-Php Leakon-Wiki Leakon-BBS XueBaoBao Xyoyou