标签:php
我有好奇心.我创建了一个简单的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);
解决方法:
发生这种情况的原因是内存使用情况,这也增加了垃圾收集周期在第二次运行期间触发的机会.如果在两次运行之间添加以下代码:
unset($timeStart, $invoices, $i, $invoice);
gc_collect_cycles();
删除引用并清理未使用的内存,您将获得相同的时间.
标签:php
来源: https://codeday.me/bug/20191118/2028801.html