我有一个素数的计算。现在我想知道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);
答案 0 :(得分:6)
您正在计算完整秒数,因为time()
返回自unix纪元以来的秒数。你也不能除以1000得到毫秒,你必须乘以。请改用microtime()
:
$start = microtime(true);
...
$end = microtime(true);
echo ($end - $start).' seconds';
// Or in milliseconds:
echo (($end - $start) * 1000).' ms';
你的例子中发生的事情是你在几秒钟内得到了两次,例如。 1314173657
和1314173661
。差异是4秒。然后你将它除以1000并得到0,004“毫秒”,这显然是错误的。乘以1000可得到4000ms的正确结果,但准确度较差。这就是microtime派上用场的地方。
答案 1 :(得分:1)
time()给你几秒钟。为什么你最后把它分成1000。
如果要计算ms,则应乘以1000或使用microtime()。
答案 2 :(得分:0)
如果你需要ms的时间,你不应该除以1000,而是乘以。
time()函数以秒为单位返回值。
答案 3 :(得分:0)
time
给你几秒钟。尝试microtime(true)
将实际微秒视为浮动。