比较PHP中的执行时间
我想比较一下不同的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
$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解析的一句话非常可笑,感谢您的解释和伟大的想法。