我刚刚使用dotdeb.org的apt源升级到php 5.3.8。
php性能的测试结果非常糟糕。
我在安装php5.3.8之前和之后用这个脚本测试。似乎运行相同的代码将花费10倍于php5.3.8的时间而不是php5.3.7。
测试php脚本:
<?php
//test float
function test_float() {
$t = pi();
$timeStart = gettimeofday();
for($i = 0; $i < 3000000; $i++) {
sqrt($t);
}
$timeEnd = gettimeofday();
$time = ($timeEnd["usec"]-$timeStart["usec"])/1000000+$timeEnd["sec"]-$timeStart["sec"];
$time = round($time, 3)."s";
return $time;
}
echo "php version:" , phpversion(), "\n";
echo "call sqrt() 3,000,000 times will cost ", test_float(), "\n";
?>
测试结果:
php version:5.3.3-7+squeeze3
call sqrt() 3,000,000 times will cost 1.369s
php version:5.3.3-7+squeeze3
call sqrt() 3,000,000 times will cost 1.095s
php version:5.3.3-7+squeeze3
call sqrt() 3,000,000 times will cost 1.072s
php version:5.3.8-1~dotdeb.2
call sqrt() 3,000,000 times will cost 10.644s
php version:5.3.8-1~dotdeb.2
call sqrt() 3,000,000 times will cost 10.567s
php version:5.3.8-1~dotdeb.2
call sqrt() 3,000,000 times will cost 10.343s
答案 0 :(得分:5)
5.3.8版本可能已使用调试选项编译,或者没有编译器优化。
或者您可能在PHP 5.3.7中添加了一些缓慢扩展,但在PHP 5.3.7中未启用,例如 xdebug 或 suhosin 。
我打赌第二种解决方案。
php -m
的输出。 (已加载模块的列表。)php -n
运行基准测试(运行PHP而不加载任何ini设置文件)答案 1 :(得分:2)
无论如何,因为5.3.7中有critical security bug。函数crypt
仅返回salt
。因此,无论速度更慢还是更快,都不建议使用5.3.7
答案 2 :(得分:0)
基准测试和性能分析应始终在实际代码上进行,您正在尝试优化性能。
事实上,也许只有sqrt()函数更慢,并且所有函数的99%都快了3倍。我认为问题来自你的基准。
另外,请检查你是否在同一台机器上,同一台机器上运行php,同样的php.ini等。