为什么php5.3.8比5.3.7慢10倍?

为什么php5.3.8比5.3.7慢10倍?,php,Php,我刚刚使用dotdeb.org的apt源代码升级到PHP5.3.8 php性能的测试结果非常糟糕 我在安装php5.3.8之前和之后使用此脚本进行测试。在php5.3.8中运行相同代码的时间似乎是在php5.3.7中的10倍 测试php脚本: <?php //test float function test_float() { $t = pi(); $timeStart = gettimeofday(); for($i = 0; $i < 3000000;

我刚刚使用dotdeb.org的apt源代码升级到PHP5.3.8

php性能的测试结果非常糟糕

我在安装php5.3.8之前和之后使用此脚本进行测试。在php5.3.8中运行相同代码的时间似乎是在php5.3.7中的10倍

测试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";

?>

5.3.8版本可能已使用调试选项进行编译,也可能未进行编译器优化

或者您可能在PHP5.3.8中添加了PHP5.3.7中未启用的一些慢速扩展,如xdebugsuhosin

我打赌是第二种解决方案

  • 比较
    php-m
    的输出。(已加载模块的列表。)
  • 尝试使用
    php-n
    运行基准测试(运行php时不加载任何ini设置文件)

5.3.8版本可能已使用调试选项进行编译,也可能未进行编译器优化

或者您可能在PHP5.3.8中添加了PHP5.3.7中未启用的一些慢速扩展,如xdebugsuhosin

我打赌是第二种解决方案

  • 比较
    php-m
    的输出。(已加载模块的列表。)
  • 尝试使用
    php-n
    运行基准测试(运行php时不加载任何ini设置文件)

基准测试和性能分析应始终对实际代码进行,即您试图优化性能的代码

事实上,可能只有sqrt()函数速度较慢,99%的函数速度快了3倍。我认为问题来自你


另外,请检查您在两个版本、同一台机器、同一php.ini等上编译php的方式是否相同。

基准测试和性能分析应始终在实际代码上进行,即您试图优化性能的代码上进行

事实上,可能只有sqrt()函数速度较慢,99%的函数速度快了3倍。我认为问题来自你


另外,请检查您在两个版本、同一台机器、同一个php.ini等上编译php的方式是否相同。

这并不重要,因为5.3.7中有一个。函数
crypt
仅返回
salt
。因此,无论速度是慢是快,都不建议使用5.3.7,因为5.3.7中有一个。函数
crypt
仅返回
salt
。因此,无论速度是慢是快,都不建议使用5.3.7

dotdeb版本是如何编译的?鉴于它来自完全不同的来源,你正在比较苹果和橙子。dotdeb版本是如何编译的?鉴于它来自完全不同的来源,你正在比较苹果和橙子。只有当你使用
crypt
时才重要。信不信由你,不是每个应用程序都需要它;)只有在使用
crypt
时才重要。信不信由你,不是每个应用程序都需要它;)谢谢阿诺。它确实是由xdebug引起的,当使用php-n运行时,PHP5.3.8的速度和以前一样快。似乎xdebug应该跟上新版本的php。谢谢arnaud。它确实是由xdebug引起的,当使用php-n运行时,PHP5.3.8的速度和以前一样快。xdebug似乎应该跟上新版本的php。
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