PHP执行时间测量精度

时间:2013-06-28 06:26:34

标签: php

所以我像这样测量执行时间:

$time = -microtime(true);
...
$time += microtime(true);

PHP版本是在Win Server 2008 x64机器上运行的5.3.26RC1 x86。 “精度”ini参数等于16。 但是,每次执行时间低于0.001时,它只返回零(显然,脚本不能立即执行!)。 更奇怪的是,我的测试机器(标准的php.ini-development)返回非零值,即使这两个语句之间没有代码......可能有什么问题?

更新:简单测试:

<?php
ini_set('precision',16);
echo php_uname() . PHP_EOL;
echo phpversion() . PHP_EOL;
echo ini_get('precision').PHP_EOL;

$time = -microtime(true);
$time += microtime(true);
echo number_format($time, 10) .PHP_EOL;
?>

测试机器输出:

Windows NT XXX 6.1 build 7601 (Windows 7 Ultimate Edition Service Pack 1) i586
5.4.12
16
0.0000028610

生产机器输出:

Windows NT XXX 6.1 build 7601 (Windows Server 2008 R2 Standard Edition Service Pack 1) i586
5.3.26RC1
16
0.0000000000

1 个答案:

答案 0 :(得分:5)

您的平台Windows无法通过标准时间来区分这么短的时间。

来自PHP源代码的评论:

“在Windows上,time_sleep_until具有毫秒精度,而 microtime()精确到十分之一秒。”

(在ext/standard/tests/misc/time_sleep_until_basic.phpt。)