当前位置:首页> PHP教程> PHP入门
关键字
文章内容
php学习日志
 
 
修改时间:[2011/06/10 03:30]    阅读次数:[978]    发表者:[起缘]
 

PHP 4/5 使用class、function和什么都不用直接执行效率对比

php,class,function,oop
今天看到这篇 How efficient is OOP in PHP? ,其中对 php 使用class、function和什么都不用直接执行的效率进行了对比,列出了数据和图表,但是其测试是在 2003 年进行的,当时的 php 版本还比较老,而且那会儿 php5 还没有发行版本吧,在我自己的机器下测试用了一下 php4 和 php5 的上述 3 种方式的大概情况。

代码还是用那个测试中的:



OOP (a.php)
class test
{

function one() {
return 1;}

}

for ($i=0; $i<1000000; $i++)
{

$testclass=new test();
$cnt+=$testclass->one();

}



Function (b.php)
function one()
{

return 1;

}

for ($i=0; $i<1000000; $i++)
{

$cnt+=one();

}


两者都不用 (c.php)
for ($i=0; $i<1000000; $i++)
{

$cnt+=1;

}

首先在 php 4.3.10 下测试,以下是执行时间列表:(单位:秒)
# OOP Function 两者都不用
1 4.777 1.678 1.008
2 4.883 1.672 1.040
3 4.749 1.746 1.011
4 4.946 1.728 1.020
5 4.764 1.768 1.007
6 4.734 1.740 1.014
7 4.765 1.719 1.028
8 4.973 1.680 1.011
9 4.732 1.835 1.014
10 4.799 1.753 1.011
平均值 4.8122 1.7319 1.0164

我的机器配置是 P4 1.60GHz with 512 RAM;webmasterstop那个测试的配置是双Xeon 2.0Ghz with 2GB RAM,我的机器还是差一些;不过从测试结果来看,我的结果和 2003 年那会儿差不多,或者还好一点,可以看出 php 从 2003 年到现在本身的效率方面还是提高了不少。

接着在 php 5.04 下测试,以下是执行时间列表:(单位:秒)
# OOP Function 两者都不用
1 4.207 1.995 1.219
2 4.465 1.982 1.158
3 4.554 1.909 1.200
4 4.058 1.918 1.157
5 4.143 1.917 1.184
6 4.037 1.928 1.165
7 4.125 1.976 1.154
8 4.056 2.021 1.168
9 4.216 1.905 1.193
10 4.154 2.041 1.157
平均值 4.2015 1.9592 1.1755

php5 下的测试结果和 php4 环境下的对比:使用 OOP 的效率由平均执行时间 4.8 秒变为 4.2 秒,效率有比较大的提高;使用 Function 和直接执行的情况变化不大,php5 环境下还稍微差了一点点。

总体来看,虽然基于 OOP 开发比较方便,有众多优点,但 OOP 方式的执行效率还是比 Function 或直接执行差一些,也不能忽视,找到开发和效率的平衡点是需要考虑的一个问题。在众多开源项目中,phpMyAdmin 目前好像还是一直是基于过程的,大部分都使用 Function,连模板(Template)也不用,php 代码直接和 HTML 直接混在一起,这样代码维护可能麻烦些,phpMyAdmin在开源项目中也算是特立独行吧。