PHP执行时间测量精度

PHP执行时间测量精度,php,Php,所以我用这样的方式来衡量执行时间: $time = -microtime(true); ... $time += microtime(true); PHP版本为5.3.26RC1 x86,在Win Server 2008 x64机器上运行。 “精度”ini参数等于16。 但是,每次执行时间低于0.001时,它只返回零(显然,脚本不能立即执行!)。 更奇怪的是,我的测试机器(标准php.ini开发)返回非零值,即使这两个语句之间没有代码。。。有什么不对劲吗 Upd:简单测试: <?php

所以我用这样的方式来衡量执行时间:

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

Upd:简单测试:

<?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

您的平台Windows无法区分如此短的时间和标准的时间通话

PHP源代码中的注释:

“在windows上,睡眠时间的精确度为毫秒,microtime()的精确度为十分之一秒。”


(在
ext/standard/tests/misc/time\u sleep\u until\u basic.phpt
中)

您的要求太高了(尤其是在Windows上)。。。您真的不应该期望精度低于0.001秒,尤其是在脚本语言中。您能显示显示时间的代码吗?当我尝试
microtime(true)
时,代码显示13位小数(Windows上的默认PHP设置)。你确定你没有格式化你的输出吗?你如何打印值?只要把你的
microtime
调用放入一个长循环,你就会看到发生了什么。我用一些测试更新了这个问题