第二次运行相同代码时的 PHP 执行时间

标签 php

我有一个好奇心。我创建了一个简单的 php 脚本,它创建了一个包含 100 万个简单数组元素的数组,然后循环遍历它们。

第一次执行时,似乎需要大约 1.4 秒。 但是在第二次执行相同的代码时,它总是需要大约 ~2,1 秒。我已经重复了几次,结果都一样。

这是为什么?

此处的代码示例:

    $timeStart = microtime(true);

    $invoices = array();
    for ($i = 1; $i <= 1000000; $i++) {
        $invoices[] = array(
            'issuedValue' => $i,
            'fiscalNumber' => $i,
            'random1' => $i,
            'random2' => $i,
            'random3' => $i,
        );
    }
    foreach ($invoices as $invoice) {
        // nothing here
    }

    var_dump(microtime(true) - $timeStart);

    // second iteration here

    $timeStart = microtime(true);

    $invoices = array();
    for ($i = 1; $i <= 1000000; $i++) {
        $invoices[] = array(
            'issuedValue' => $i,
            'fiscalNumber' => $i,
            'random1' => $i,
            'random2' => $i,
            'random3' => $i,
        );
    }
    foreach ($invoices as $invoice) {
        // nothing here
    }

    var_dump(microtime(true) - $timeStart);

最佳答案

发生这种情况是因为内存使用也增加了在第二次运行期间触发垃圾收集周期的机会。如果您在运行之间添加以下代码:

unset($timeStart, $invoices, $i, $invoice);
gc_collect_cycles();

要删除引用并清理未使用的内存,您将获得相同的时间。

关于第二次运行相同代码时的 PHP 执行时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37855331/

相关文章:

php - 在 CentOS 问题上安装 PHP

php - SQL 查询中损坏的 If 语句

php - 使用变量来包含动态 CSS

php - 如果列包含 Laravel 中的 JSON 编码数据,我如何在数据库中搜索值

PHP:die() 必须死吗?

php - 如何从 PHP 中的单个数组中提取 3 个唯一值?

PHP 计算 'downtime'

PHP 网站搜索脚本

php - Zend 框架自动完成

php - 从 mysql 获取数据并以周为单位进行分组并显示日期