正确使用时间

时间:2018-10-19 09:22:14

标签: php time scientific-notation

我正在尝试使用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秒内加载-第二个结果看起来正确,但是我不确定第一个结果...

1 个答案:

答案 0 :(得分:2)

您没有正确读取结果。那是“ scientific notation”,用于表示太小或太大而无法方便处理的值。

7.1048736572266E-5秒等于0.000071048736572266秒。

所以您说对了,您的测试时间确实少于7秒。