繁体   English   中英

PHP:函数的速度很快,但是太快了吗?

[英]PHP: Time speed of functions, but it's too fast?

我真的一直想测试正则表达式等的速度,在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的非常随机的数字。它没有显示值得进行基准测试的值!

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

usleep(2000000); // wait for two seconds

在Windows系统上,usleep功能也很棘手。

或者,您可以简单地使用带有秒数的sleep函数作为其参数,例如:

sleep(10); // wait for 10 seconds

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

`--> php tmp.php
Did nothing in 0.00011587142944336 seconds
.-(/tmp)---------------------------------------------------(pestilence@pandemic)-

这与usleep(1000000)...(1秒)

`--> php tmp.php
Did nothing in 1.0000479221344 seconds
.-(/tmp)---------------------------------------------------(pestilence@pandemic)-

仅供参考,我使用的是PHP 5.3.0,并不是说它在5.0之后没有任何区别(在这种情况下)。

您的代码执行时间不到一秒钟吗? 如果是这样,那就可以解释您的基准测试。 当我分析某篇文章的内容时,我的例行程序运行了10,000次,有时甚至是数百万次。 这些天计算机速度很快。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM