比较PHP中的执行时间

比较PHP中的执行时间,php,comparison,execution-time,Php,Comparison,Execution Time,我想比较一下不同的PHP代码,看看哪一个执行得更快。我目前正在使用以下代码: <?php $load_time_1 = 0; $load_time_2 = 0; $load_time_3 = 0; for($x = 1; $x <= 20000; $x++) { //code 1 $start_time = microtime(true); $i = 1; $i++;

我想比较一下不同的PHP代码,看看哪一个执行得更快。我目前正在使用以下代码:

<?php
    $load_time_1 = 0;
    $load_time_2 = 0;
    $load_time_3 = 0;

    for($x = 1;  $x <= 20000; $x++)
    {
        //code 1
        $start_time = microtime(true);

        $i = 1;
        $i++;

        $load_time_1 += (microtime(true) - $start_time);

        //code 2
        $start_time = microtime(true);

        $i = 1;
        $i++;

        $load_time_2 += (microtime(true) - $start_time);

        //code 3
        $start_time = microtime(true);

        $i = 1;
        $i++;

        $load_time_3 += (microtime(true) - $start_time);
    }

    echo $load_time_1;
    echo '<br />';
    echo $load_time_2;
    echo '<br />';
    echo $load_time_3;
?>
第二个结果是

0.44057559967041
0.43392467498779
0.43600964546204
0.50447297096252
0.48595094680786
0.49943733215332
0.5283739566803
0.55247902870178
0.55091571807861
第三个结果是

0.44057559967041
0.43392467498779
0.43600964546204
0.50447297096252
0.48595094680786
0.49943733215332
0.5283739566803
0.55247902870178
0.55091571807861

结果看起来不错,但问题是,每次我执行这段代码,结果都不一样。另外,我在同一台机器上对同一代码进行了三次比较


为什么在比较时速度会有差异?有没有一种方法可以比较执行时间并看到真正的差异?

计算速度从来都不是一成不变的。PHP是一个服务器端脚本,因此根据服务器可用的计算能力,它可能需要不同的时间


由于您要从每个步骤的开始时间中减去,因此预计加载时间3将大于2,而加载时间3将大于1。

结果不同的原因是因为同时还有其他事情在进行,例如基于windows或linux的任务、其他进程,您永远不会得到准确的结果,您最好在100次迭代中运行代码,然后对结果进行偏差,以找到平均时间,并将其用作您的数字/

另外,创建一个可以为您处理此问题的类也是有益的,这样您就可以一直使用它,而不必每次都编写代码:

尝试类似的方法(未经测试):

然后像这样使用:

$CB = new CodeBench();

$CB->start("bench_1");

    //Do work:

$CB->end("bench_1");

$CB->start("bench_2");

    //Do work:

$CB->end("bench_2");

echo "First benchmark had taken: " . $CB->calculate("bench_1");
echo "Second benchmark had taken: " . $CB->calculate("bench_2");
有一件事叫做。
只要你的数字不超过它,你所有的测量都只是浪费时间

唯一正确的度量方法称为评测,表示度量代码的重要部分,而不是无意义的部分

为什么会有不同 比较时的速度

这有两个原因,都与PHP和操作系统如何处理无法控制的事情有关

首先,计算机处理器在任何给定时间只能进行一定数量的操作。操作系统主要负责处理多任务,将这些可用周期分配给应用程序。由于这些周期不是以恒定速率给出的,因此即使使用相同的PHP命令,也会出现较小的速度变化,因为处理器周期是如何分配的

其次,造成时间变化的一个更大原因是PHP的后台操作。有许多事情对用户来说是完全隐藏的,比如内存分配、垃圾收集和处理变量的各种名称空间等等。这些操作也会占用计算机周期,并且它们可能会在脚本执行期间的意外时间运行。如果垃圾收集是在第一次增量期间执行的,而不是在第二次增量期间执行的,则会导致第一次操作的时间长于第二次。有时,由于垃圾收集,测试的执行顺序也会影响执行时间


速度测试可能有点棘手,因为不相关的因素(如后台运行的其他应用程序)可能会影响测试结果。一般来说,很难区分脚本之间的微小速度差异,但是当速度测试运行足够多次时,就可以看到真正的结果。例如,如果一个脚本始终比另一个脚本快,它通常会指出该脚本在处理速度方面效率更高。

执行时间的微小差异是可以预期的,Ithink@Daniel怀特:谢谢,我忘了。我已经更新了我的问题。事实上,他正在为每个步骤指定一个新的开始时间。。。至于第一句话,这就是我的想法。我知道不同的计算机可能需要不同的时间来执行代码,但我在同一台计算机上使用相同的代码,结果有所不同。关于php解析的一句话非常可笑,感谢您的解释和伟大的想法。