发新话题
打印

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

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

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

代码还是用那个测试中的:
OOP (a.php)Function (b.php)两者都不用 (c.php)
class test
{
    function one() {
      return 1;
    }
}

for ($i=0; $i<1000000; $i++)
{
    $testclass=new test();
    $cnt+=$testclass->one();
}
function one()
{
    return 1;
}

for ($i=0; $i<1000000; $i++)
{
    $cnt+=one();
}
for ($i=0; $i<1000000; $i++)
{
    $cnt+=1;
}

首先在 php 4.3.10 下测试,以下是执行时间列表:(单位:秒)
#OOPFunction两者都不用
14.7771.6781.008
24.8831.6721.040
34.7491.7461.011
44.9461.7281.020
54.7641.7681.007
64.7341.7401.014
74.7651.7191.028
84.9731.6801.011
94.7321.8351.014
104.7991.7531.011
平均值4.81221.73191.0164

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

接着在 php 5.04 下测试,以下是执行时间列表:(单位:秒)
#OOPFunction两者都不用
14.2071.9951.219
24.4651.9821.158
34.5541.9091.200
44.0581.9181.157
54.1431.9171.184
64.0371.9281.165
74.1251.9761.154
84.0562.0211.168
94.2161.9051.193
104.1542.0411.157
平均值4.20151.95921.1755

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

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

TOP

发新话题