我正在尝试使用microtime()
比较两个函数。
但是,我得到了意外的结果。
根据我对这则SO帖子(Tracking the script execution time in PHP的理解,我应该能够从$before
中减去$after
来获得执行时间,以秒为单位。
我将脚本设置如下:
<?php
$int = 4;
$before = microtime(true);
print_r(filter_var($int, FILTER_VALIDATE_INT));
echo '<br />';
$after = microtime(true);
echo ($after - $before). 'sec' ."\n";
echo '<br />';
$int = 4;
$before = microtime(true);
print_r(is_int($int));
echo '<br />';
$after = microtime(true);
echo ($after - $before) .'sec' ."\n";
我知道这不是执行时间的准确迭代,因为它不会循环X次函数来获取平均值-首先只是进行基本测试,所以请忽略该方面。
在浏览器中转到此页面时,得到以下输出:
4
9.0599060058594E-6秒
1
9.5367431640625E-7秒
页面加载时间不到一秒钟-因此出现9.XYZ
的原因让我有些困惑。
我正确使用microtime()
吗?附带问题:如何查看最快的功能?链接问题中的可接受答案都为两个功能输出0ms。
修改
我将脚本更改为此:
<?php
function checkInt($int)
{
return is_int($int);
}
function checkIntFilter($int)
{
return filter_var($int, FILTER_VALIDATE_INT);
}
$before = microtime(true);
for ($i = 1; $i < 1000; $i++)
{
checkInt(4);
}
$after = microtime(true);
echo ($after - $before). ' sec' .'<br />';
$before = microtime(true);
for ($i = 1; $i < 1000; $i++)
{
checkIntFilter(4);
}
$after = microtime(true);
echo ($after - $before). ' sec';
现在输出:
7.1048736572266E-5秒
0.00024008750915527秒
但是,我的页面肯定会在7秒内加载-第二个结果看起来正确,但是我不确定第一个结果...
答案 0 :(得分:2)
您没有正确读取结果。那是“ scientific notation”,用于表示太小或太大而无法方便处理的值。
7.1048736572266E-5
秒等于0.000071048736572266
秒。
所以您说对了,您的测试时间确实少于7秒。