我有好奇心。我创建了一个简单的php脚本,它创建了一个1 mil简单数组元素的数组,然后遍历它们。
在第一次执行时,似乎需要约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);
答案 0 :(得分:3)
这是因为内存使用会增加垃圾收集周期在第二次运行期间触发的可能性。如果在运行之间添加以下代码:
unset($timeStart, $invoices, $i, $invoice);
gc_collect_cycles();
删除引用并清理未使用的内存,您将获得相同的时间。