我有一个好奇心。我创建了一个简单的 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/