PHP 5.3和5.2在递归、尾递归方面的性能测试_ideal

通过斐波那契数算法对比不同PHP版本中迭代、递归与尾递归的性能差异。发现PHP5.3.3在递归方面性能显著提升,但尾递归并未得到优化。

Erlang等函数式编程语言的尾递归很好用,前一阵我想测试一下PHP5.3有没有针对尾递归优化,对比递归、尾递归和迭代三者之间的性能差异,依据网上关于斐波那契数算法改成PHP语法,进行了一次不太准确的效率测试,发现递归花费时间是迭代的4倍以上,尾递归花费时间比递归还要多花费30%到50%的时间。

不过期间我不小心按错了快捷键,导致在PHP不同的版本运行,其结果的差异完全出乎意料,于是我下载了最新的PHP5.2.14和PHP5.3.3几个版本,分别进行测试,以下是测试结果:

测试环境:
CPU:Inetl Celeron CPU 900 @2.2G
RAM:2G
OS: Windows 7 专业版

不同版本的运行结果:
PHP版本 迭代 递归 尾递归
php-5.2.14-nts-Win32-VC6-x86    0.146471024    1.328943014    1.41772294
php-5.2.14-Win32-VC6-x86        0.20116806     1.61998105     2.56595993
php-5.3.3-nts-Win32-VC6-x86     0.117762089    0.485166073    0.67838192
php-5.3.3-nts-Win32-VC9-x86     0.110873938    0.462769985    0.680724144
php-5.3.3-Win32-VC6-x86         0.132544041    0.724455833    0.968312025
php-5.3.3-Win32-VC9-x86         0.160384893    0.726171017    1.029062986

结论:
* 多次运行的结果略有差异,但并不影响大致结论
- PHP5.3.3递归的效率比PHP5.2.14大幅度提升
- ThreadSafe版本比非ThreadSafe版本的效率低20%以上,尽量使用FastCGI
- PHP5.3.3尾递归并没有被优化,递归层级仍然受到限制,并且在性能上比普通递归也没有优势,大概是由于需要多传参数的缘故反而损失性能
- VC9编译出的PHP比VC6编译出的在效率上并没有明显提升


继续测试PHP5.3.3与PHP5.2.14两个非ThreadSafe版本在字符串处理上的效率

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值