我有一个计算素数.现在我想知道PHP需要多长时间进行此计算.我在计算之前和之后都拿了两个微缩胶片并减去它.但结果与我的观察不符.我必须等待两秒钟才能得到结果,但计算结果为0,004 ms.为什么会这样,我如何获得真正的持续时间?
$prim_arr = array();
$start = time();
for ($i = 1; $i <= 20000; $i++) {
$result = NULL;
for ($x = 2; $x < $i; $x++) {
if(!($i % $x)){
$result = $i;
break;
}
}
if (!$result) $prim_arr[] = $i;
}
$end = time();
echo (($end - $start)/1000)." ms";
print_r($prim_arr);
Run Code Online (Sandbox Code Playgroud)
您正在计算完整秒数作为time()
返回自unix时期以来的秒数.你也不能除以1000得到毫秒,你必须乘以.microtime()
改为使用:
$start = microtime(true);
...
$end = microtime(true);
echo ($end - $start).' seconds';
// Or in milliseconds:
echo (($end - $start) * 1000).' ms';
Run Code Online (Sandbox Code Playgroud)
在你的例子中发生的事情是你在几秒钟内得到了两次,例如.1314173657
和1314173661
.差异是4秒.然后你将它除以1000并得到0,004"毫秒",这显然是错误的.乘以1000可得到4000ms的正确结果,但准确度较差.这就是microtime派上用场的地方.