PHP 4/5 使用class、function和什么都不用直接执行效率对比 php,class,function,oop 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在开源项目中也算是特立独行吧。 |