准确的方法来衡量PHP脚本的执行时间

我想知道PHP for-loop执行多less毫秒。

我知道一个通​​用algorithm的结构,但不知道如何在PHP中实现它:

Begin init1 = timer(); // where timer() is the amount of milliseconds from midnight the loop begin some code the loop end total = timer() - init1; End 

您可以使用microtimefunction。 从文档 :

microtime – 以微秒返回当前的Unix时间戳


如果get_as_float设置为TRUE ,则microtime()将返回一个float,它表示自Unix时期以来的秒数,精确到最近的微秒。

用法示例:

 $start = microtime(true); while (...) { } $time_elapsed_secs = microtime(true) - $start; 

你可以用下面的方式使用microtime(true)

把这个放在你的php文件的开头:

 //place this before any script you want to calculate time $time_start = microtime(true); 

//你的脚本代码在这里

 // do something 

把这个放在你的php文件的末尾:

 // Display Script End time $time_end = microtime(true); //dividing with 60 will give the execution time in minutes other wise seconds $execution_time = ($time_end - $time_start)/60; //execution time of the script echo '<b>Total Execution Time:</b> '.$execution_time.' Mins'; 

它会在minutes输出你的结果。

从PHP 5.4开始,您可以使用$_SERVER["REQUEST_TIME_FLOAT"] 。 它包含微秒级精度的请求开始的时间戳。

 $time = microtime(true) - $_SERVER["REQUEST_TIME_FLOAT"]; 

资料来源: http : //php.net/manual/en/function.microtime.php

这允许您只用一行代码来测量脚本执行,例如将其放在脚本的末尾。

创build文件loadtime.php

 <?php class loadTime{ private $time_start = 0; private $time_end = 0; private $time = 0; public function __construct(){ $this->time_start= microtime(true); } public function __destruct(){ $this->time_end = microtime(true); $this->time = $this->time_end - $this->time_start; echo "Loaded in $this->time seconds\n"; } } 

比在你的脚本的开始, <?php写入include 'loadtime.php'; $loadtime=new loadTime(); include 'loadtime.php'; $loadtime=new loadTime();

当页面加载结束时,将会写入“加载x秒”

 $start = microtime(true); for ($i = 0; $i < 10000; ++$i) { // do something } $total = microtime(true) - $start; echo $total; 

请参阅microtime() 。

这是一个执行任意一段PHP代码的函数,就像Python的timeit模块一样: https : //gist.github.com/flaviovs/35aab0e85852e548a60a

如何使用它:

 include('timeit.php'); const SOME_CODE = ' strlen("foo bar"); '; $t = timeit(SOME_CODE); print "$t[0] loops; $t[2] per loop\n"; 

结果:

 $ php x.php 100000 loops; 18.08us per loop 

免责声明:我是这个主要的作者

编辑:timeit现在是一个单独的,独立的项目在https://github.com/flaviovs/timeit

你有正确的想法,除了microtime()函数更精确的时间。

如果循环内部的速度很快,则表观经过时间可能为零。 如果是这样,围绕代码包装另一个循环,并重复调用它。 确保将差异除以迭代次数以获得每次一次的时间。 我有需要10,000,000次迭代的简档代码来获得一致的,可靠的计时结果。

这里是非常简单和简短的方法

 <?php $time_start = microtime(true); //the loop begin //some code //the loop end $time_end = microtime(true); $total_time = $time_end - $time_start; echo $total_time; // or whatever u want to do with the time ?>