1

我真的很想测试正则表达式等的速度,在 php.net 上有这个例子:

$time_start = microtime(true);

// Sleep for a while
usleep(100); // Or anything for that matter..

$time_end = microtime(true);
$time = $time_end - $time_start;

echo "Did nothing in $time seconds\n";

编辑:我的意思是播放一个大的函数循环来代替 usleep()。它总是显示一个非常随机的数字,总是小于 1。它没有显示任何值得基准的东西!

4

3 回答 3

1

usleep 函数需要以微秒为单位的时间,您指定的值非常低,请尝试增加:

usleep(2000000); // wait for two seconds

usleep 函数在 Windows 系统上也很棘手。

或者您可以简单地使用 sleep 函数,并将秒数指定为其参数,例如:

sleep(10); // wait for 10 seconds
于 2010-01-31T06:02:20.013 回答
1

无法复制,没有人拥有比我更快的计算机。16 个执行线程,8 个内核,i7 架构。您的 PHP 构建或操作系统必须是次优的。这正是运行您的代码。

`--> php tmp.php
在 0.00011587142944336 秒内什么也没做
.-(/tmp)-------------------------------------------- --------(瘟疫@大流行)-

这是使用睡眠(1000000)...(1 秒)

`--> php tmp.php
在 1.0000479221344 秒内什么也没做
.-(/tmp)-------------------------------------------- --------(瘟疫@大流行)-

仅供参考,我使用的是 PHP 5.3.0,并不是说它对 5.0 有任何影响(在这种情况下)。

您的代码执行时间是否少于一秒?如果是这样,那将解释您的基准。当我为一篇文章描述一些东西时,我会运行我的例行程序 10,000 次……有时是数百万次。这些天计算机速度很快。

就“随机”部分而言,这就是为什么我采取几个大迭代样本并将它们平均在一起的原因。把标准差也扔进去也没有什么坏处。另外,请记住不要在测试时流式传输 MP3 或播放视频。:p

于 2010-01-31T06:05:36.747 回答
1

计时器就是这样。在函数周围环绕一个循环。如果要测量微秒,则运行 10^6 次,如果要测量毫秒,则运行 10^3 次。不要期望得到超过 2 位十进制数字的精度。

于 2010-02-01T14:49:12.580 回答